forked from 1399852153/Streamjava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCollectUtils.java
More file actions
70 lines (61 loc) · 1.65 KB
/
Copy pathCollectUtils.java
File metadata and controls
70 lines (61 loc) · 1.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package stream.util;
import function.BiFunction;
import function.Supplier;
import stream.Collector;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
/**
* @Author xiongyx
* on 2019/3/10.
*
* stream.collect() 参数常用工具类
*/
public class CollectUtils {
/**
* stream 转换为 List
* */
public static <T> Collector<T, List<T>, List<T>> toList(){
return new Collector<T, List<T>, List<T>>() {
@Override
public Supplier<List<T>> supplier() {
return ArrayList::new;
}
@Override
public BiFunction<List<T>, List<T>, T> accumulator() {
return (list, item) -> {
list.add(item);
return list;
};
}
@Override
public Function<List<T>, List<T>> finisher() {
return list -> list;
}
};
}
/**
* stream 转换为 Set
* */
public static <T> Collector<T, Set<T>, Set<T>> toSet(){
return new Collector<T, Set<T>, Set<T>>() {
@Override
public Supplier<Set<T>> supplier() {
return HashSet::new;
}
@Override
public BiFunction<Set<T>, Set<T>, T> accumulator() {
return (set, item) -> {
set.add(item);
return set;
};
}
@Override
public Function<Set<T>, Set<T>> finisher() {
return set -> set;
}
};
}
}