1
List 集合按照某个字段或者属性分组的两种方式
作者:共饮一杯无
- 2022-11-13 浙江
本文字数:1329 字
阅读完需:约 4 分钟
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
版权声明: 本文为 InfoQ 作者【共饮一杯无】的原创文章。
原文链接:【http://xie.infoq.cn/article/87f290e23de77dca8c78aeb0c】。文章转载请联系作者。
共饮一杯无
关注
鲜衣怒马意气风发,愿你归来仍是少年。 2018-10-19 加入
全栈开发者,CSDN博客专家,51CTO 专家博主,阿里云专家博主,华为云享专家,持续输出干货,欢迎关注。
评论