引用:通過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