開發者學堂課程【Java 進階程式設計:Stream 基本操作】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址:
https://developer.aliyun.com/learning/course/20/detail/426Stream 基本操作
内容簡介:
1.Stream 具體内容
2.Stream 基礎操作
從 JDK1.8 開始,由于已經到了大資料時代,是以在類集裡面也支援有資料的流式分析處理操作,為此就專門供一個 Stream 的接口,同時在 Collection 接口裡面也提供有為此接口執行個體化的方法。
·擷取 Stream 接口對象:
public default Stream<E>stream();
Stream 主要功能是進行資料的分析處理,同時主要是針對于集合中的資料進行分析操作。
2.1 範例:Stream 的基本操作
先簡單的寫一個程式代碼:
首先在 Collections.addAll(all, ,);中存上幾個任意操作标志,如 “Java”“JavaScript”,“Python”,“Ruby”,“Go”。
接着對 Stream 對象執行個體化
Stream<String> stream = all.stream();
獲得 Stream 接口對象後,輸出元素個數
System.out.println(stream.count());
【注意這裡的 count 是 long 型的】
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNkJ2NyMTMjFzNwcjZ2EGOjZDO0ETZ1EmYlN2M1EGNw8CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
運作結果為: 5
但如果隻進行到這裡,并未能發揮 Stream 的優勢,Stream 最大的優勢就是通過函數式程式設計進行資料的流式處理。
比如想查出在整個過程中帶有字母 “J” ,可添加代碼
System.out.println(stream.filter((ele)->ele.toLowerCase().contains(“j”)).count());
運作結果為: 2
以上的程式隻是實作了一些最基礎的資料的個數統計,而更多條件下,我們可能需要的是擷取裡面的滿足條件資料的内容,是以此時可以進行實作資料的采集操作。
2.2 範例:資料采集
繼續上個例子
将滿足條件的資料收集起來轉為 List 集合
List<String>result=stream.filter((ele)->ele.toLowerCase().contains(“j”)).collect(Collectors.toList());
輸出result system.out.println(result);
運作結果為:
[Java, JavaScript]
可以發現整個過程中,都是用函數式這種模式 來進行整體的描述操作·。
在 Stream 資料流處理的過程之中還允許資料的分頁處理,提供有兩個方法:
·設定取出的最大資料量:
public Stream<T>limit(long maxSize);
·跳過指定資料量:
public Stream<T>skip(long n)。
2.3 範例:觀察分頁
再添加加兩個任意的操作标志,“JSP”,“Json”
跳出兩個标志,取出兩個标志再收集
List<String>result=stream.filter((ele)->ele.toLowerCase().contains(“j”)).skip(2).limit(2).collect(Collectors.toList());
[JSP, Json]
Stream 的操作主要是利用自身的特點實作資料的分析處理操作。