lambda表達式之常用方法parallelStream,stream


引用:通過lambda表達式快速從一個集合中撈取數據生成一個新的集合。

一、parallelStream,stream

List<Integer> i=Arrays.asList(1,2,3,4,5,6,7);
System.out.println("stream.forEach打印結果如下");
i.stream().forEach(System.out :: println);//固定結果 1234567
System.out.println("parallelStream.forEach打印結果如下");
i.parallelStream().forEach(System.out :: println);//每次的結果都不同
System.out.println("parallelStream.forEachOrdered打印結果如下");
i.parallelStream().forEachOrdered(System.out :: println);//結果同stream.forEach

 

對比發現parallelStream執行效率要比傳統的for循環和stream要快的多,
parallelStream是多線程執行。


那么什么時候要用stream或者parallelStream呢?可以從以下三點入手考慮

是否需要並行? 

任務之間是否是獨立的?是否會引起任何競態條件?
結果是否取決於任務的調用順序?

二、parallelStream、stream常用方法 --filter,map,count

List<Integer> i=Arrays.asList(1,2,3,4,5,6,7);

//過濾集合i中保留大於5的數字放入到新的集合中
List<Integer> collect = i.stream().filter(integer -> integer > 5).collect(Collectors.toList()); //[6,7]
//過濾集合i中保留大於5的數字,並將得到的數字乘以10放入到新的集合中
List<Integer> collect = i.stream().filter(integer -> integer > 5).map(integer->integer*10).collect(Collectors.toList());//[60,70]

long count = i.stream().filter(integer -> integer > 5).map(integer -> integer * 10).count();  // 2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM