写点什么

List 集合按照某个字段或者属性分组的两种方式

作者:共饮一杯无
  • 2022-11-13
    浙江
  • 本文字数:1329 字

    阅读完需:约 4 分钟

List集合按照某个字段或者属性分组的两种方式

Java8 之前的分组

代码如下:


    public static List<User> getUserList(){        List<User> userList = new ArrayList<>();        userList.add(new User("小明",11,"北京",66));        userList.add(new User("小红",12,"上海",99));        userList.add(new User("小詹",14,"杭州",77));        userList.add(new User("小龙",16,"伦敦",55));        userList.add(new User("小斯",9,"杭州",33));        userList.add(new User("小詹",9,"上海",33));        userList.add(new User("小布",12,"伦敦",88));        userList.add(new User("小布",12,"上海",55));        return userList;    }
/** * java8之前对象集合根据某个字段分组 */ @Test public void sortUserListByAge(){ List<User> userList = getUserList(); Map<String, List<User>> groupByUserCityMap = new HashMap<>(); for (User user : userList) { List<User> tmpList = groupByUserCityMap.get(user.getCity()); if (tmpList == null) { tmpList = new ArrayList<>(); tmpList.add(user); groupByUserCityMap.put(user.getCity(), tmpList); } else { tmpList.add(user); } } System.out.println("按照城市分组后结果:"+groupByUserCityMap); }
复制代码


输出如下:


按照城市分组后结果:{上海=[User(name=小红, age=12, city=上海, score=99), User(name=小詹, age=9, city=上海, score=33), User(name=小布, age=12, city=上海, score=55)], 伦敦=[User(name=小龙, age=16, city=伦敦, score=55), User(name=小布, age=12, city=伦敦, score=88)], 杭州=[User(name=小詹, age=14, city=杭州, score=77), User(name=小斯, age=9, city=杭州, score=33)], 北京=[User(name=小明, age=11, city=北京, score=66)]}
复制代码

Java8 的分组

代码如下:


    /**     * java8根据某个字段分组     */    @Test    public void java8GroupUserList(){        List<User> userList = getUserList();        Map<String, List<User>> groupByUserNameMap = userList.stream().collect(Collectors.groupingBy(User::getName));        System.out.println("按照姓名分组后结果:"+groupByUserNameMap);    }
复制代码


输出如下:


按照姓名分组后结果:{小龙=[User(name=小龙, age=16, city=伦敦, score=55)], 小詹=[User(name=小詹, age=14, city=杭州, score=77), User(name=小詹, age=9, city=上海, score=33)], 小明=[User(name=小明, age=11, city=北京, score=66)], 小红=[User(name=小红, age=12, city=上海, score=99)], 小斯=[User(name=小斯, age=9, city=杭州, score=33)], 小布=[User(name=小布, age=12, city=伦敦, score=88), User(name=小布, age=12, city=上海, score=55)]}
复制代码


本文内容到此结束了,

如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。

如有错误❌疑问💬欢迎各位大佬指出。

主页共饮一杯无的博客汇总👨‍💻

保持热爱,奔赴下一场山海。🏃🏃🏃

发布于: 2022-11-13阅读数: 77
用户头像

鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入

全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。

评论

发布
暂无评论
List集合按照某个字段或者属性分组的两种方式_Java_共饮一杯无_InfoQ写作社区