java8 list<对象> 转map<属性,List<属性>>
时间: 2023-11-01 07:07:41 浏览: 107
可以使用Java 8中的Stream API来实现List<对象>转换为Map<属性, List<属性>>。具体实现如下:
假设有一个类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;
}
}
```
现在有一个List<Person> persons,我们需要将其按照年龄age分组,得到Map<Integer, List<String>>,其中Integer表示年龄,List<String>表示同一年龄的人名字列表。可以使用如下代码实现:
```
Map<Integer, List<String>> ageToNamesMap = persons.stream()
.collect(Collectors.groupingBy(Person::getAge, Collectors.mapping(Person::getName, Collectors.toList())));
```
上述代码中,groupingBy方法用于按照年龄age分组,mapping方法用于将Person对象转换为对应的名字字符串,toList方法则将所有名字字符串收集到一个List中。
注意,如果有多个Person对象的年龄相同,它们的名字会被添加到同一个List中。
阅读全文