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

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

编码文章call10242025-02-01 3:07:2130A+A-

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

组装数据

我们新建一个类:Dog类

public class Dog {

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

组装List集合

List 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> groupMap = list.stream().collect(Collectors.groupingBy(Dog::getColor));
System.out.println(JSON.toJSONString(groupMap));

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

注意分组后的返回类型是 Map

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4