java stream 把对象list转换为 Map<String, List<String>> 的结果
时间: 2024-10-23 12:11:28 浏览: 40
Java Stream API 可以非常方便地将List转换成Map,假设我们有一个Person对象列表,每个Person对象有两个属性:name和hobbies,我们可以这样操作:
```java
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
class Person {
String name;
List<String> hobbies;
// 构造函数、getter和setter省略...
}
List<Person> persons = Arrays.asList(
new Person("Alice", Arrays.asList("Reading", "Drawing")),
new Person("Bob", Arrays.asList("Gaming", "Sports"))
);
Map<String, List<String>> map = persons.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.mapping(Person::getHobbies, Collectors.toList())));
// 结果:
// {Alice=[Reading, Drawing], Bob=[Gaming, Sports]}
```
这里,`Collectors.groupingBy()`方法根据`Person::getName`方法的结果作为键(key),而`Collectors.mapping()`则用于获取每个Person对象的`hobbies`字段并收集到一个新的List中,最后返回的是一个Map。
阅读全文