Skip to content

java.lang.IllegalStateException: Duplicate key

场景1

使用流式处理,终端操作使用了Collectors.toMap,但未指定mergeFunction。

复现代码

Java
List docs = new ArrayList();
//  以下两行为伪代码
docs.add(Object(name=1,age=2));
docs.add(Object(name=1,age=3));
Map<String,Object> map =docs .stream().collect(Collectors.toMap(Object::getName(), e -> e);

以上代码会使map的key重复,报java.lang.IllegalStateException: Duplicate key 异常。

解决方法

Java
List docs = new ArrayList();
//  以下两行为伪代码
docs.add(Object(name=1,age=2));
docs.add(Object(name=1,age=3));
Map<String,Object> map =docs .stream().collect(Collectors.toMap(Object::getName(), e -> e, (a, b) -> a));