Java Stream函數式編程案例圖文詳解

Java Stream函數式編程?用過都說好,案例圖文詳解送給你

導讀

做者計劃把Java Stream寫成一個系列的文章,本文只是其中一節。更多內容期待您關注個人號!java

1、什麼是Java Stream?

Java Stream函數式編程接口最初是在Java 8中引入的,而且與lambda一塊兒成爲Java開發的里程碑式的功能特性,它極大的方便了開放人員處理集合類數據的效率。從筆者以前看過的調查文章顯示,絕大部分的開發者使用的JDK版本是java 8,其中Java Stream和lambda功不可沒。linux

Java Stream就是一個數據流經的管道,而且在管道中對數據進行操做,而後流入下一個管道。有學過linux 管道的同窗應該會很容易就理解。在沒有Java Stram以前,對於集合類的操做,更多的是經過for循環。你們從後文中就能看出Java Stream相對於for 循環更加簡潔、易用、快捷。spring

管道的功能包括:Filter(過濾)、Map(映射)、sort(排序)等,集合數據經過Java Stream管道處理以後,轉化爲另外一組集合或數據輸出。編程

Java Stream函數式編程?用過都說好,案例圖文詳解送給你

咱們先來看一個例子:數組

List<string> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur");

List<string> list = nameStrs.stream()
        .filter(s -&gt; s.startsWith("L"))
        .map(String::toUpperCase)
        .sorted()
        .collect(toList());
System.out.println(list);
  • 首先,咱們使用Stream()函數,將一個List轉換爲管道流
  • 調用filter函數過濾數組元素,過濾方法使用lambda表達式,以L開頭的元素返回true被保留,其餘的List元素被過濾掉
  • 而後調用Map函數對管道流中每一個元素進行處理,字母所有轉換爲大寫
  • 而後調用sort函數,對管道流中數據進行排序
  • 最後調用collect函數toList,將管道流轉換爲List返回

最終的輸出結果是:[LEMUR, LION]。你們能夠想想,上面的這些對數組進行遍歷的代碼,若是你用for循環來寫,須要寫多少行代碼?來,咱們來繼續學習Java Stream吧!springboot

Java Stream函數式編程?用過都說好,案例圖文詳解送給你

2、將數組轉換爲管道流

使用Stream.of()方法,將數組轉換爲管道流。函數式編程

String[] array = {"Monkey", "Lion", "Giraffe", "Lemur"};
Stream<string> nameStrs2 = Stream.of(array);

Stream<string> nameStrs3 = Stream.of("Monkey", "Lion", "Giraffe", "Lemur");

3、將集合類對象轉換爲管道流

經過調用集合類的stream()方法,將集合類對象轉換爲管道流。函數

List<string> list = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");
Stream<string> streamFromList = list.stream();

Set<string> set = new HashSet&lt;&gt;(list);
Stream<string> streamFromSet = set.stream();

4、將文本文件轉換爲管道流

經過Files.lines方法將文本文件轉換爲管道流,下圖中的Paths.get()方法做用就是獲取文件,是Java NIO的API!學習

也就是說:咱們能夠很方便的使用Java Stream加載文本文件,而後逐行的對文件內容進行處理。code

Stream<string> lines = Files.lines(Paths.get("file.txt"));

期待您的關注

相關文章
相關標籤/搜索