日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【Java8精华教程】一起爪哇Java8——好用的Stream

發布時間:2025/7/14 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java8精华教程】一起爪哇Java8——好用的Stream 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Stream組成

在傳統Java編程,或者說是類C語言編程中,我們如何操作一個數組數據呢?或者更泛化的講,我們如何操作一個“集合”(Collection)數據呢?在Java中我們利用java.util包里的各種數據結構封裝,來很好的表示了數組(Array)、集合(Set)、列表(List)和kv對象(Map)。但是抽象表示只是意味著存儲和定義操作方法,具體如何訪問中間的數據,其實還是比較原始的,或者換句話說,操作一個Collection的數據,我們使用的是Collection本身提供的API。就如我們訪問一個List里的所有數據,需要一個for循環來get每個element。

Java 8引入了一個Stream對象,來重新封裝集合中的數據,就像集合根據其特定的數據結構存儲了數據,而Stream將其表示為一個數據流,一個類似List的有序的數據流。值得一提的是,Stream是不存儲數據的,它核心是要將不同的數據——流化。

Stream包含一個*數據源頭*(Source),一組(0個或多個)*中間操作*和一個*終止操作*。其實很好理解,一個流一定需要一個數據*源頭*,畢竟要確定是哪些數據要流式處理。*中間操作*是一些類似map、filter之類的轉換操作,也就是說map和filter只是將一個流變為新的流,它們可以串起來(stream pipeline)。而*終止操作*顧名思義,*終止操作*會結束流,*終止操作*包括產出結果型和邊際效果型(side-effect),其中前者比如count之類的產出一個int值的,后者則是forEach之類的允許后續處理的。下面具體分開講解一下Stream的各個組成部分。

源頭(Source)

其中源頭來源于數組、Collection、I/O資源和生成函數。

Arrays

通過一個數組生成一個流,是比較容易理解的。Java API也是通過Arrays.stream()方法來實現的:

public static <T> Stream<T> stream(T[] array, int startInclusive, int endExclusive) {return StreamSupport.stream(spliterator(array, startInclusive, endExclusive), false);}

看其聲明就是將一個數組轉換為一個Stream對象。其委托StreamSupport來構造,而StreamSupport的stream方法聲明如下:

public static <T> Stream<T> stream(Spliterator<T> spliterator, boolean parallel) {Objects.requireNonNull(spliterator);return new ReferencePipeline.Head<>(spliterator,StreamOpFlag.fromCharacteristics(spliterator),parallel);}

這里一個很重要的參數是Spliterator,這是構造流的核心。ReferencePipeline.Head構造方法就是將一些屬性設置好。而ReferencePipeline是個重要的概念,它是pipeline里對于*中間操作*和*源頭*實現的抽象類,從其類聲明中可以看出:

abstract class ReferencePipeline<P_IN, P_OUT>extends AbstractPipeline<P_IN, P_OUT, Stream<P_OUT>>implements Stream<P_OUT> {}

兩個泛型表示了pipeline的輸入和輸出。*中間操作*的實現很多也是由其實現的,比如map和filter。回到剛才的分析,因為ReferencePipeline構造后沒有后續的方法鏈調用了。所以要理解的就是Spliterator這個東西是什么。

閱讀全文直接點擊:http://click.aliyun.com/m/9890/

轉載于:https://my.oschina.net/u/3161071/blog/832558

總結

以上是生活随笔為你收集整理的【Java8精华教程】一起爪哇Java8——好用的Stream的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。