map集合用java8分组
时间: 2023-06-30 20:09:10 浏览: 133
可以使用Java 8的Stream API中的groupingBy方法来对Map集合进行分组。以下是一个示例代码:
假设我们有一个Person对象,它有一个属性name和age。
```java
public class Person {
private String name;
private int age;
// 构造方法、getter和setter等省略
}
```
现在我们有一个List<Person>,我们想要将它们按照年龄分组并放入一个Map<Integer, List<Person>>中。
```java
List<Person> persons = Arrays.asList(
new Person("Alice", 20),
new Person("Bob", 25),
new Person("Charlie", 30),
new Person("David", 25),
new Person("Eva", 20)
);
Map<Integer, List<Person>> personsByAge = persons.stream()
.collect(Collectors.groupingBy(Person::getAge));
System.out.println(personsByAge);
```
输出结果为:
```java
{20=[Person{name='Alice', age=20}, Person{name='Eva', age=20}],
25=[Person{name='Bob', age=25}, Person{name='David', age=25}],
30=[Person{name='Charlie', age=30}]}
```
上面的代码中,我们使用了Stream API中的groupingBy方法将List<Person>按照Person对象的年龄属性分组,并将结果放入一个Map<Integer, List<Person>>中。其中Person::getAge表示获取Person对象的年龄属性值。
阅读全文