-
轉換成集合
查看全部 -
轉換成列表:stream.collect(Collectors.toList());
注意需要進行一次強制類型轉換
查看全部 -
stream對象一旦被關閉,其內部就不在有數據了,不能在對其做任何操作了
toArray是結束操作符
查看全部 -
轉化為字符串
stream.collect(Collectors.joining).toString()
查看全部 -
Stream對象 --> 轉換得到其他類型
轉為數組類型
stream.toArray()
stream.toArray(String[]::new) // 方法引入的方式
查看全部 -
Stream對象對于基本數據類型的功能封裝:目前支持了int/long/double類型的底層優化
IntStream.of(new int[] {10,20,30}).forEach(System.out::println)
IntStream.range(1,5).forEach(System.out::println) //包含1 不包含5
IntStream.rangeClosed(1,5).forEach(System.out::println) //包含1 也包含5
查看全部 -
Map轉化為Stream的方式
通過map對象的.entrySet().stream() 得到Stream對象
查看全部 -
列表和集合轉換為Stream的方式
列表或集合對象的.stream()方法即可返回Stream對象
查看全部 -
批量數據對象(包含各種形式) 轉換為Stream對象
多個數據轉換Stream
Stream Stream = Stream.of("A","B","C")?
數組
String [] strArrays = new String[]{"A","B","C"}
Stream stream = Arrays.stream(strArrays)
查看全部 -
操作集合元素-類型轉換:
其他類型(創建、獲取)->Stream對象?
Stream 對象-> 其他類型
常見API操作
查看全部 -
終結操作:短路操作->當前的Stream對象在處理過程中,一旦滿足某個條件,就可以得到結果
包括: anyMatch/AllMatch/noneMatch/findfirst/findAny等
short-circuiting : 在無限大的stream 中返回有限大的stream 需要包含短路操作是有必要的
查看全部 -
終結操作:非短路操作->當前的Stream對象必須處理完集合中所有的數據,才能得到處理結果
包括:forEach/forEachOrdered/toArray/reduce/collect/min/max/count/iterator等等
查看全部 -
終結操作|結束操作{Terminal}:一個steam對象只能有一個中間操作。
這個操作不可逆,一旦發生,就會真實處理數據生成對應結果
查看全部 -
中間操作:
操作結果是一個Stream對象,所以中間操作可有一個或多個連續的中間操作,需要注意的是中間操作只記錄操作方式,不做具體執行,直到結束操作發生時,才做數據的最終執行。
中間操作就是業務邏輯處理,操作過程分為有狀態和無狀態
無狀態中間操作:即處理數據時,不收前置中間操作的影響
????包括: map/filter/peek/parallel/sequential/unordered
有狀態中間操作:即處理數據時,受前置中間操作的影響
????包括:distinct/sorted/limit/skip
查看全部 -
1.聚合操作:
2.Stream的處理流程
????數據源
????數據轉換[可一到多次轉換]
????獲取結果
3. 獲取Stream對象
????a.從集合中或者數組中獲取
????????Collection.stream() 如:list.stream()
????? ? Collection.paralletStream() 獲取集合的支持并發處理的stream對象
????????從數組中獲取stream對象的方法
????????Arrays.stream(數組對象)?
????b.從BufferReader緩沖流中獲取stream對象
????????BufferReader.lines() -> stream()
????c. 通過靜態工廠方法
????????java.util.stream.IntStream.range() 直接獲取stream對象
????????java.nio.file.Files.walk()
????d.自行構建
????????java.util.Spliterator
?????e.其他方法
????????如 Random.ints() / Pattern.splitAsStream()
查看全部
舉報