stream流将list转换为map
时间: 2023-04-28 08:06:01 浏览: 119
java利用反射,将Object和Map进行互相转换,list和map互相转换
可以使用Java 8中的stream API将list转换为map。例如:
```
List<Person> list = Arrays.asList(new Person("Alice", 25), new Person("Bob", 30), new Person("Charlie", 35));
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Person::getName, Person::getAge));
```
在这个例子中,我们将list转换为了一个由人名映射到年龄的map。
可以使用lambda表达式将对象的属性作为键和值传递给toMap方法,这里假设Person有两个属性 name和age
你也可以使用下面这种方式来达到相同的效果
```
list.stream().collect(Collectors.toMap(person -> person.getName(), person -> person.getAge()));
```
请注意,如果两个元素具有相同的键,则会发生IllegalStateException
如果你想避免这种情况,可以使用下面的代码:
```
list.stream().collect(Collectors.toMap(Person::getName, Person::getAge, (oldValue, newValue) -> oldValue));
```
这里我们使用了第三个参数,当遇到重复键值对时,用原来的键值对替换新的键值对
阅读全文