做者計劃把Java Stream寫成一個系列的文章,本文只是其中一節。更多內容期待您關注個人號!java
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管道處理以後,轉化爲另外一組集合或數據輸出。編程
咱們先來看一個例子:數組
List<string> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur"); List<string> list = nameStrs.stream() .filter(s -> s.startsWith("L")) .map(String::toUpperCase) .sorted() .collect(toList()); System.out.println(list);
最終的輸出結果是:[LEMUR, LION]。你們能夠想想,上面的這些對數組進行遍歷的代碼,若是你用for循環來寫,須要寫多少行代碼?來,咱們來繼續學習Java Stream吧!springboot
使用Stream.of()方法,將數組轉換爲管道流。函數式編程
String[] array = {"Monkey", "Lion", "Giraffe", "Lemur"}; Stream<string> nameStrs2 = Stream.of(array); Stream<string> nameStrs3 = Stream.of("Monkey", "Lion", "Giraffe", "Lemur");
經過調用集合類的stream()方法,將集合類對象轉換爲管道流。函數
List<string> list = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur"); Stream<string> streamFromList = list.stream(); Set<string> set = new HashSet<>(list); Stream<string> streamFromSet = set.stream();
經過Files.lines方法將文本文件轉換爲管道流,下圖中的Paths.get()方法做用就是獲取文件,是Java NIO的API!學習
也就是說:咱們能夠很方便的使用Java Stream加載文本文件,而後逐行的對文件內容進行處理。code
Stream<string> lines = Files.lines(Paths.get("file.txt"));