Java 对象集合分类:使用流和 Lambda 表达式按字段分组

本文将介绍如何使用 Java 8 的流和 Lambda 表达式将一个对象的集合按照其中一个字段进行分类,并给出详细代码示例。通过将对象按年龄分组,演示了如何使用 Collectors.groupingBy 方法实现分类功能。

示例代码

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class ObjectClassification { public static void main(String[] args) { // 创建一个对象的集合 List<Person> persons = new ArrayList<>(); persons.add(new Person("Alice", 25)); persons.add(new Person("Bob", 30)); persons.add(new Person("Charlie", 25)); persons.add(new Person("David", 35)); persons.add(new Person("Eve", 30));

    // 将对象按照年龄进行分类
    Map&lt;Integer, List&lt;Person&gt;&gt; groupedByAge = persons.stream()
            .collect(Collectors.groupingBy(Person::getAge));

    // 打印分类结果
    for (Map.Entry&lt;Integer, List&lt;Person&gt;&gt; entry : groupedByAge.entrySet()) {
        int age = entry.getKey();
        List&lt;Person&gt; people = entry.getValue();
        System.out.println("年龄 " + age + " 的人员:");
        for (Person person : people) {
            System.out.println(person.getName());
        }
        System.out.println("----------------");
    }
}

}

class Person { private String name; private int age;

public Person(String name, int age) {
    this.name = name;
    this.age = age;
}

public String getName() {
    return name;
}

public int getAge() {
    return age;
}

}

代码解释

上述代码中,首先创建了一个 Person 类,其中包含姓名和年龄两个字段。然后创建了一个 persons 集合,其中包含了一些 Person 对象。

接下来使用 Java 8 的流和 Collectors.groupingBy 方法将 persons 集合按照年龄进行分类,将结果保存在 groupedByAge 变量中。groupedByAge 是一个 Map<Integer, List<Person>> 类型的变量,键是年龄,值是该年龄对应的 Person 对象列表。

最后,遍历 groupedByAge,打印分类结果。

总结

本文通过一个简单的代码示例,演示了如何使用 Java 8 的流和 Lambda 表达式将一个对象的集合按照其中一个字段进行分类。Collectors.groupingBy 方法提供了强大的分类功能,可以根据不同的字段进行分类,使代码更加简洁易懂。

Java 对象集合分类:使用流和 Lambda 表达式按字段分组

原文地址: https://www.cveoy.top/t/topic/qeMp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录