Java8 集合操作

集合分组

方式一

1
2
3
4
5
6
7
8
9
10
11
12
public static Map<String, List<Apple>> getAppleByOne(List<Apple> apples) {
Map<String, List<Apple>> map = new HashMap<>();
for (Apple a : apples) {
List<Apple> list = map.get(a.getColor());
if (list == null) {
list = new ArrayList<>();
map.put(a.getColor(), list);
}
list.add(a);
}
return map;
}

方式二

1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static Map<String,List<Apple>> getByOptioal(List<Apple> apples){
Map<String, List<Apple>> map = new HashMap<>();
apples.stream().forEach((Apple a) -> {
List<Apple> list1 = Optional
.ofNullable(map.get(a.getColor()))
.orElseGet(() -> {
List<Apple> list = new ArrayList<>();
map.put(a.getColor(), list);
return list;
});
list1.add(a);
});
return map;
}

方式三

1
2
3
4
private static Map<String,List<Apple>> getBycollection(List<Apple> apples){
return apples.stream()
.collect(Collectors.groupingBy(Apple::getColor));
}

参考:java8之Collector分组

分享到:
Disqus 加载中...

如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理