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));