stream list集合转换成map
时间: 2023-07-22 12:35:27 浏览: 91
可以使用Java8的Stream API将一个Stream列表转换为一个Map。假设我们有一个Stream列表,每个Stream的元素都具有一个唯一的键和一个值,我们可以使用以下方式将它们转换为Map:
```
Map<String, Object> resultMap = streamList
.collect(Collectors.toMap(Stream::getKey, Stream::getValue));
```
其中,Stream::getKey和Stream::getValue是获取Stream元素的键和值的方法引用。这将返回一个Map,其中每个Stream元素的键和值都被添加到Map中。如果Stream中有重复的键,则会抛出一个IllegalStateException异常。可以通过提供一个合并函数来解决这个问题,例如:
```
Map<String, Object> resultMap = streamList
.collect(Collectors.toMap(Stream::getKey, Stream::getValue, (existing, replacement) -> existing));
```
这个合并函数将保留现有的键和值,如果有重复的键,则保留现有的值。
相关问题
stream流实现list集合转换成map
可以使用Java8的Stream API将一个List转换为一个Map。假设我们有一个List,每个元素都具有一个唯一的键和一个值,我们可以使用以下方式将它们转换为Map:
```
Map<String, Object> resultMap = list.stream()
.collect(Collectors.toMap(item -> item.getKey(), item -> item.getValue()));
```
其中,item.getKey()和item.getValue()是获取List元素的键和值的方法。这将返回一个Map,其中每个List元素的键和值都被添加到Map中。如果List中有重复的键,则会抛出一个IllegalStateException异常。可以通过提供一个合并函数来解决这个问题,例如:
```
Map<String, Object> resultMap = list.stream()
.collect(Collectors.toMap(item -> item.getKey(), item -> item.getValue(), (existing, replacement) -> existing));
```
这个合并函数将保留现有的键和值,如果有重复的键,则保留现有的值。
list集合转换成map集合
可以使用Java 8的Stream API来将List集合转换成Map集合。
假设我们有一个List集合,其中的元素是Person对象,每个Person对象都有一个唯一的id属性和一个name属性,我们想要将这个List集合转换成Map集合,以Person对象的id属性作为键,Person对象本身作为值,可以这样写:
```
List<Person> personList = ... // 假设这是一个Person对象的List集合
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Function.identity()));
```
其中,`Person::getId`表示使用Person对象的id属性作为Map键,`Function.identity()`表示使用Person对象本身作为Map值,最终得到的personMap就是一个以Person对象的id属性作为键,Person对象本身作为值的Map集合。
阅读全文