stream list转map重复 key
时间: 2023-08-25 13:17:47 浏览: 63
在将Stream列表转换为Map时,如果存在重复的键(key),则会引发`IllegalStateException`异常。这是因为Map不允许具有相同的键。
如果你要处理可能存在重复键的情况,你可以使用`toMap`方法的重载版本,提供一个合并函数来解决冲突。这个函数将定义如何处理重复的键。
以下是一个示例代码:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = List.of("key1", "value1", "key2", "value2", "key1", "value3");
Map<String, String> map = list.stream()
.collect(Collectors.toMap(
// 键提取函数
i -> i,
// 值提取函数
i -> i,
// 合并函数,在出现重复键时处理冲突
(oldValue, newValue) -> newValue
));
System.out.println(map);
}
}
```
在上面的示例中,如果存在重复的键,合并函数`(oldValue, newValue) -> newValue`将保留新的值。你可以根据自己的需求修改合并函数的逻辑。
输出结果将是`{key1=value3, key2=value2}`。注意,重复的键`key1`的值被更新为最后出现的值`value3`。