Stream常見操作API介紹
1、聚合操作
2、stream的處理流程
數據源
數據轉換
獲取結果
3、獲取Stream對象
1. 從集合後數組對象中獲取
Collection.stream()
Colleatcion.parallelStream()
Array.stream(T t)
2. BufferReader
BufferReader.lines() -> stream()
3. 靜態工廠
java.util.stream.IntStream.range()..
java.nio.file.Files.walk()..
4. 自定構建
java.util.Spliterator
5. 更多
Random,ints()
Pattern.splitAsStream()..
4、中間操作API(intermediate)
操作結果是一個stream,中間操作可以有一個或多個連續的中間操作,需要注意的是,中間操作
只記錄操作方式,不做具體處理,直到結束操作發生時,操作數據的最終執行
中間操作:就是業務邏輯處理
中間操作過程:
無狀態:數據處理時,不受前置中間操作的影響
map/filter/peek/pasallel/sequential/unordered
有狀態:數據處理時,收到前置中間操作的影響
distinct/sorted/limit/skip
5、終結操作\結束操作(Terminal)
需要注意:一個stream對象,只能有一個Terminal操作,這個操作一旦發生,就會真是處理數據
終結操作:
非短路操作:當前的Stream對象必須處理完集合的所有數據,才能的到處理結果
forEach/forEachOrdered/toArray/reduce/collect/min/max/count/iterator
短路操作:當前的Stream對象必須在處理過程中,一旦滿足某個條件,就可以得到結果
anyMatch/allMatch/noneMatch/findFirst/findAny等
Short-circuiting,當無限大的Stream -> 有限大的Stream,可以使用短路操作