Stream的groupBy用法
2020-04-26 本文已影响0人
愤怒的老照
说明
groupBy在一些地方很有用,比如一个A对应多个B,要从数据库中查找多个A以及对应的B属性,可以使用List<A>将所有的B查出来,然后将结果通过groupBy按照id分组
使用
public class GroupByTest {
@Data
@AllArgsConstructor
@NoArgsConstructor
private static class Activity {
private int id;
private String name;
}
public static void main(String[] args) {
List<Activity> activities = new ArrayList<>(Arrays.asList(
new Activity(1, "第一个活动"),
new Activity(1, "第二个活动"),
new Activity(2, "第三个活动")
));
Map<Integer, List<Activity>> tempMap = activities.stream().collect(Collectors.groupingBy(it -> it.getId()));
// {1=[GroupByTest.Activity(id=1, name=第一个活动), GroupByTest.Activity(id=1, name=第二个活动)], 2=[GroupByTest.Activity(id=2, name=第三个活动)]}
System.out.println(tempMap);
}
}