Collectors.toMap 处理重复key
时间: 2024-04-10 18:25:47 浏览: 235
在使用Java Stream API的Collectors.toMap方法时,如果存在重复的key,默认情况下会抛出IllegalStateException异常。为了处理重复的key,你可以提供一个合并函数(merge function)作为Collectors.toMap的第三个参数,这个函数定义了如何处理重复的key[^1]。
下面是一个示例,演示了如何使用Collectors.toMap处理重复的key:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> list = Arrays.asList("apple", "banana", "apple", "orange");
// 使用Collectors.toMap处理重复的key
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(
// key的提取函数
key -> key,
// value的提取函数
value -> 1,
// 合并函数,处理重复的key
(oldValue, newValue) -> oldValue + newValue
));
System.out.println(map);
}
}
```
输出结果为:
```
{orange=1, banana=1, apple=2}
```
在上述示例中,我们使用Collectors.toMap方法将列表中的元素映射为一个Map对象。在提取key和value的函数中,我们分别使用元素本身作为key,使用固定的值1作为value。在合并函数中,我们定义了如何处理重复的key,这里我们简单地将重复的key对应的value相加。
阅读全文