list通过stream流遍历后返回map<String,Object>
时间: 2024-05-05 14:16:30 浏览: 77
下面是一个示例代码,假设我们有一个List<Person>,其中Person类有name和age属性:
```
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25));
people.add(new Person("Bob", 30));
people.add(new Person("Charlie", 35));
Map<String, Object> resultMap =
people.stream()
.collect(Collectors.toMap(Person::getName, p -> p));
```
在这个示例中,我们使用stream()方法获取一个流,然后使用collect()方法将流转换为一个Map。在collect()方法中,我们使用Collectors.toMap()静态方法生成一个Map,其中键是Person对象的name属性,值是Person对象本身。这样我们就可以通过name属性访问Person对象了。
注意,如果存在重复的键值,例如两个Person对象具有相同的name属性,那么会抛出一个IllegalStateException异常。我们可以使用Collectors.toMap()方法的第三个参数来指定当出现重复键值时如何处理。例如,我们可以使用如下代码来选择保留第一个出现的Person对象:
```
Map<String, Object> resultMap =
people.stream()
.collect(Collectors.toMap(Person::getName, p -> p, (p1, p2) -> p1));
```
阅读全文