Collectors.groupingBy 用法记录

public class test {
public static void main(String[] args) throws ParseException {
// groupingBy
Map<String, List> tempMap = Stream.of(new Person("1", "aa", "12"), new Person("1", "bb", "13"), new Person("3", "cc", "14")).collect(Collectors.groupingBy(x -> x.id));

    for (String s : tempMap.keySet()) {
        System.out.println(s);
        tempMap.get(s).stream().forEach(x -> System.out.println(x));
    }

    Map<String, List<Person>> tempMap1 = Stream.of(new Person("1", "aa", "13"), new Person("1", "aa", "11"), new Person("1", "aa", "12"))
            .collect(Collectors.groupingBy(x -> fetchGroupKey(x)));
    System.out.println(tempMap1.keySet());
    for (String s : tempMap1.keySet()) {
        System.out.println(s);
        tempMap1.get(s).stream().forEach(x -> System.out.println(x));
    }

}

private static String fetchGroupKey(Person person){
    return person.getId()+"#"+person.getName()+"#"+person.getAge();
}

}

Map<String, List> tempMap:以person id作为分组的key,map中的key即为personid,list 即为id=map中key的集合。
Map<String, List> tempMap1:可以组合分组的key,map key 即为组合字段,list即为 组合key=map中key的集合。

以上代码输出:
1
Person{id='1', name='aa', age='12'}
Person{id='1', name='bb', age='13'}
3
Person{id='3', name='cc', age='14'}

[1#aa#12, 1#aa#13, 1#aa#11]
1#aa#12
Person{id='1', name='aa', age='12'}
1#aa#13
Person{id='1', name='aa', age='13'}
1#aa#11
Person{id='1', name='aa', age='11'}

posted @   于贰哥  阅读(4244)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示