java中list转化为map
时间: 2024-04-27 08:05:40 浏览: 74
在Java 8中将List转换为Map对象方法
在Java中,可以通过以下代码将List转换为Map:
```
List<MyObject> list = ...;
Map<KeyType, MyObject> map = list.stream()
.collect(Collectors.toMap(MyObject::getKey, Function.identity()));
```
其中,MyObject是List中的元素类型,KeyType是MyObject中用作Map键的属性类型。getKey是MyObject类中的方法,用于返回Map键值。Function.identity()返回一个函数,它将输入对象作为输出返回。
如果MyObject中的属性不能作为Map键,也可以使用lambda表达式指定键值:
```
Map<KeyType, MyObject> map = list.stream()
.collect(Collectors.toMap(
obj -> obj.getKey(),
Function.identity()
));
```
注意,如果List中有重复的键值,上述代码会抛出IllegalStateException异常。可以在toMap方法中传递一个合并函数来处理重复键值:
```
Map<KeyType, MyObject> map = list.stream()
.collect(Collectors.toMap(
MyObject::getKey,
Function.identity(),
(oldValue, newValue) -> oldValue
));
```
这里传递了一个合并函数,它将旧值保留为Map的值。
阅读全文