List<Person> 通过stream函数 转换成 Map<String,Person>
时间: 2023-06-08 22:08:49 浏览: 116
可以使用以下代码将 List<Person> 转换成 Map<String,Person>:
```
Map<String, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Function.identity()));
```
其中,Person::getName 是获取 Person 对象的姓名作为 Map 的键,Function.identity() 表示使用 Person 对象本身作为 Map 的值。同时,使用 Java 8 中的 Stream API 中的 collect 方法将 Stream 转换成 Map 集合。
相关问题
List<Person> 通过stream函数 转换成 Map<String, List<Person>>
可以使用Java8中的流(stream)和Collectors工具类来实现这个转换。示例代码如下:
```
Map<String, List<Person>> personMap = personList.stream()
.collect(Collectors.groupingBy(Person::getName));
```
这段代码假设你有一个名为`personList`的`List<Person>`类型的对象。使用`stream()`方法将它转换成了一个流,然后使用`groupingBy()`方法对这个流进行分组,其中`Person::getName`是分组依据,它返回`Person`类型的姓名。最后将结果转换成了`Map<String, List<Person>>`类型的对象。这样你就得到了一个以姓名为键,以该姓名对应的所有人的列表为值的映射关系。
java stream 把对象list转换为 Map<String, List<String>> 的结果
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。
阅读全文