lambda表示式之常用方法parallelStream,stream
阿新 • • 發佈:2020-10-20
引用:通過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