1. 程式人生 > 實用技巧 >lambda表示式之常用方法parallelStream,stream

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