java8 stream接口 終端操作 forEachOrdered和forEach

對於中間操作和終端操作的定義,請看《JAVA8 stream接口 中間操作和終端操作》

這篇開始介紹java8的終端操作,以及forEachOrdered和forEach;先看下這個函數的定義

void forEach(Consumer<? super T> action);  
  
void forEachOrdered(Consumer<? super T> action);

這兩個函數都是對集合的流,進行遍歷操作,是屬於內部迭代;傳入一個Consumer的函數接口,關於consumer的定義請看《JAVA8 Consumer接口》;下面通過案例,簡單瞭解下:

List<String> strs = Arrays.asList("a", "b", "c");
        strs.stream().forEachOrdered(System.out::print);//abc
        System.out.println();
        strs.stream().forEach(System.out::print);//abc
        System.out.println();
        strs.parallelStream().forEachOrdered(System.out::print);//abc
        System.out.println();
        strs.parallelStream().forEach(System.out::print);//bca

先看第一段輸出和第二段輸出,使用的是stream的流,這個是一個串行流,也就是程序是串行執行的,所有看到遍歷的結果都是按照集合的元素放入的順序;

看第三段和第四段輸出,使用的parallelStream的流,這個流表示一個並行流,也就是在程序內部迭代的時候,會幫你免費的並行處理,關於java8的並行處理,會在後期爲大家介紹;

第三段代碼的forEachOrdered表示嚴格按照順序取數據,forEach在並行中,隨機排列了;這個也可以看出來,在並行的程序中,如果對處理之後的數據,沒有順序的要求,使用forEach的效率,肯定是要更好的

 

1.lambda表達式
《java8 Lambda表達式簡介》

《java8 lambda表達式,方法的引用以及構造器的引用》

2.函數式接口
《java8 函數式接口簡介》

《JAVA8 Function接口以及同類型的特化的接口》

《JAVA8 Consumer接口》

《JAVA8 Supplier接口》

《JAVA8 UnaryOperator接口》

《JAVA8 BiConsumer 接口》

3.stream接口操作

《java8 Stream接口簡介》

《 java8 Stream-創建流的幾種方式》

《JAVA8 stream接口 中間操作和終端操作》

《JAVA8 Stream接口,map操作,filter操作,flatMap操作》

《JAVA8 stream接口 distinct,sorted,peek,limit,skip》

《java8 stream接口 終端操作 forEachOrdered和forEach》

《java8 stream接口 終端操作 toArray操作》

《java8 stream接口 終端操作 min,max,findFirst,findAny操作》

《java8 stream接口終端操作 count,anyMatch,allMatch,noneMatch》

《java8 srteam接口終端操作reduce操作》

《java8 stream接口 終端操作 collect操作》

4.其他部分

《java8 Optional靜態類簡介,以及用法》

發佈了13 篇原創文章 · 獲贊 12 · 訪問量 4558
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章