java8并行流处理实例
01
import java.util.Arrays;
02
import java.util.LinkedHashMap;
03
import java.util.Map;
04
import java.util.function.Function;
05
import java.util.stream.Collectors;
06
import java.util.stream.LongStream;
07
import java.util.stream.Stream;
08
09
/**
10
* @Auther: jack
11
* @Date: 2018/7/24 11:05
12
* @Description: jdk8 并行流处理
13
*/
14
public class StreamParallel {
15
public static void main(String[] args) {
16
//rangeClosed包含末尾数据
17
long sum=LongStream.rangeClosed(1,10000000L).parallel().reduce(0,Long::sum);
18
System.out.println(sum);
19
20
//range不包含末尾节点
21
sum=LongStream.range(1,10000000L).parallel().reduce(0,Long::sum);
22
System.out.println(sum);
23
24
//求和reduce()
25
System.out.println(Stream.of(1,2,3,4).reduce((sum2,item)->{
26
return sum2+item;
27
}).get());
28
System.out.println(Stream.of(1,2,3,4).reduce(Integer::sum).get());
29
30
//求最大值reduce()
31
System.out.println(Stream.of(1,2,3,4).reduce(100,(a,b)->Math.max(a, b)));
32
System.out.println(Stream.of(1,2,3,4).reduce(Integer::max).get());
33
34
//去重distinct()
35
System.out.println(Arrays.asList("a", "b", "c", "d", "a", "b", "c")
36
.stream()
37
.distinct()
38
.collect(Collectors.toList())
39
);
40
41
//统计分组
42
System.out.println(Arrays.asList("apple", "apple", "banana",
43
"apple", "orange", "banana", "papaya")
44
.stream()
45
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
46
);
47
48
//统计排序
49
Map
50
Arrays.asList("apple", "apple", "banana", "apple", "orange", "banana", "papaya")
51
.stream()
52
.collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
53
.entrySet()
54
.stream()
55
.sorted(Map.Entry.
56
.forEachOrdered(e->sortMap.put(e.getKey(),e.getValue()));
57
System.out.println(sortMap);
58
}
59
}
运行结果: