Java Stream分组返回对象中的某个值的List教程
引言
在Java开发中,使用Stream进行数据处理是一种非常高效和方便的方式。在实际开发中,有时候我们需要对一组对象进行分组,并获取每组对象中的某个值的集合。本教程将向你展示如何通过Java Stream实现这一功能。
教程步骤
第一步:准备数据对象
首先,我们需要创建一个数据对象,以便后续进行分组操作。假设我们有一个Person
类,该类包含name
和age
两个属性。
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters and setters
}
第二步:创建测试数据
接下来,我们创建一组Person
对象作为测试数据。
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 30),
new Person("Alice", 28),
new Person("Bob", 27)
);
第三步:使用Java Stream进行分组并返回某个值的List
现在,我们使用Java Stream对people
进行分组,并返回每个分组中name
的集合。
Map<String, List<Person>> groupedPeople = people.stream()
.collect(Collectors.groupingBy(Person::getName));
上述代码通过groupingBy
方法对people
进行分组,按照name
属性进行分组,并将结果存储在groupedPeople
中。
第四步:获取每个分组中的age
集合
最后,我们遍历groupedPeople
,获取每个分组中age
的集合。
Map<String, List<Integer>> ageListByGroup = groupedPeople.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> entry.getValue().stream()
.map(Person::getAge)
.collect(Collectors.toList())
));
上述代码首先将groupedPeople
转换为Stream
,然后通过map
操作获取每个Person
对象的age
属性,最后通过collect
方法将age
集合返回。
结论
通过本教程,你学会了如何使用Java Stream对对象进行分组,并返回某个值的集合。这种方法简洁高效,可以帮助你在实际开发中处理复杂的数据操作。希望本教程对你有所帮助!
erDiagram
PERSON {
string name
int age
}
引用形式的描述信息
- Java 8 中的 Stream API:[Oracle Documentation](
- Java 8 中的 Collectors 类:[Oracle Documentation](
- Java 8 中的 Function 接口:[Oracle Documentation](