Java

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);
    }
}

上一篇下一篇

猜你喜欢

热点阅读