使用java8对一个map集合进行分组
时间: 2024-02-05 19:10:28 浏览: 74
在Java 8中,可以使用`Collectors.groupingBy()`方法对集合进行分组。以下是一个示例代码:
假设我们有一个Person类,其属性包括姓名和年龄:
```
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对象的列表,我们想按年龄分组并将结果存储在一个Map中,其中键是年龄,值是具有该年龄的Person对象列表。
```
List<Person> people = Arrays.asList(
new Person("Alice", 23),
new Person("Bob", 27),
new Person("Charlie", 23),
new Person("David", 28),
new Person("Eva", 23)
);
Map<Integer, List<Person>> peopleByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(peopleByAge);
```
输出结果为:
```
{23=[Person{name='Alice', age=23}, Person{name='Charlie', age=23}, Person{name='Eva', age=23}],
27=[Person{name='Bob', age=27}],
28=[Person{name='David', age=28}]}
```
以上代码将根据年龄对Person对象进行分组,并将结果存储在`peopleByAge` Map中。
阅读全文