优秀的编程知识分享平台

网站首页 > 技术文章 正文

java8对List集合根据某一字段进行分组

nanyue 2025-01-13 16:35:31 技术文章 2 ℃

在Java8之前,我们需要对List根据其中元素的某一字段进行分组时,往往时循环遍历这个List,然后判断元素的字段是否满足要求,然后进行分组,现在Java8提供了一种更优雅更简单的方式: Collectors.groupingBy(),如下示例

组装数据

我们新建一个类:Dog类

public class Dog {

    private String name;
    private String color;
    private int age;
    // 省略get set方法
}

组装List集合

List<Dog> list = new ArrayList<>();
Dog dog1 = new Dog();
dog1.setName("旺财");
dog1.setColor("黑色");
dog1.setAge(5);
Dog dog2 = new Dog();
dog2.setName("大黄");
dog2.setColor("黑色");
dog2.setAge(4);
Dog dog3 = new Dog();
dog3.setName("小黄");
dog3.setColor("白色");
dog3.setAge(6);

分组操作

根据颜色进行分组

Map<String,List<Dog>> groupMap = list.stream().collect(Collectors.groupingBy(Dog::getColor));
System.out.println(JSON.toJSONString(groupMap));

// 输出
{"黑色":[{"color":"黑色"},{"color":"黑色"}],"白色":[{"color":"白色"}]}

注意分组后的返回类型是 Map<String, List>

Tags:

最近发表
标签列表