用stream流对某个字段进行分类转化为map
时间: 2024-03-16 18:47:42 浏览: 60
假设你有一个包含一些对象的列表,并且想要对其中某个字段进行分类,并将结果转化为一个 Map,可以使用 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;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在,假设你有一个包含多个 Person 对象的列表,你想要对这个列表中的 Person 对象按照年龄进行分类,并将结果转化为一个 Map<Integer, List<Person>>,其中键值对的键为年龄,值为该年龄对应的 Person 对象列表。代码如下:
```
List<Person> persons = Arrays.asList(new Person("Alice", 18),
new Person("Bob", 25),
new Person("Charlie", 18),
new Person("David", 30));
Map<Integer, List<Person>> ageMap = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
```
以上代码中,首先使用 stream() 方法将列表转换为一个流,然后使用 groupingBy() 方法对流中的元素进行分组,将相同年龄的 Person 对象归为一组,最后将结果转化为一个 Map。
阅读全文