Java 对象集合分类:使用流和 Lambda 表达式按字段分组
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<Integer, List<Person>> groupedByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
// 打印分类结果
for (Map.Entry<Integer, List<Person>> entry : groupedByAge.entrySet()) {
int age = entry.getKey();
List<Person> 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 方法提供了强大的分类功能,可以根据不同的字段进行分类,使代码更加简洁易懂。
原文地址: https://www.cveoy.top/t/topic/qeMp 著作权归作者所有。请勿转载和采集!