今天在使用JDK8中的Collectors.toMap()方法报错,错误信息是Duplicate key xxx,很明显是因为key重复造成的,此时通过使用Collectors.toMap()的重载方法解决问题。

Collectors.toMap(keyMapper, valueMapper, mergeFunction);

前两两个参数都是与之前一样 key 和 value得取值属性, 第三个参数是当key 发生重复时处理的方法,注释上的解释如下:

一种合并函数,用于解决两者之间的冲突与提供的相同键相关联的值到{@link Map#merge(Object, Object, BiFunction)}

该合并函数有两个参数,第一个参数为当前重复key 之前对应的值,第二个为当前重复key 现在数据的值。

1、重复时采用后面的value 覆盖前面的value

Map<String, String> map = list.stream().collect(Collectors.toMap(Student :: getClassName, Student :: getStudentName, (value1, value2) -> value2));

2、重复时将之前的value 和现在的value拼接或相加起来

Map<String, String> map = list.stream().collect(Collectors.toMap(Student :: getClassName, Student :: getStudentName, (key1 , key2)-> key1 + "," + key2 ));

3、将重复key的数据变成一个集合

Map<String, List<String>> map = list.stream().collect(Collectors.toMap(Student :: getClassName, // 此时的value 为集合,方便重复时操作s ->  {List<String> studentNameList = new ArrayList<>();studentNameList.add(s.getStudentName());return studentNameList;}, // 重复时将现在的值全部加入到之前的值内(List<String> value1, List<String> value2) -> {value1.addAll(value2);return value1;}
));

这几个办法都是基于toMap重载方法第三个参数来实现的,到此问题解决。

JDK8中Collectors.toMap方法报Duplicate key xxx错误信息相关推荐

  1. JDK8中Collectors.toMap方法报Duplicate key xxx错误信息

    两种 list转map方式 方式一:这种方式 重复key的话会报错 Duplicate key xxx Map deviceDtoMap = JsonUtils.toList(deviceDtoLis ...

  2. 如何解决Collectors#toMap报Duplicate key xxx错误问题

    文章目录 前言 问题复现 解决方案 前言 最近工作中发现同事写代码遗留了一个bug,在使用Collectors.toMap的时候会出现Exception in thread "main&qu ...

  3. controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse

    controller中执行main方法报了这个错:NoClassDefFoundError: javax/servlet/http/HttpServletResponse,如下图: NoClassDe ...

  4. Spring中抛出异常时,既要要返回错误信息,还要做事务回滚

    情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚 @Transactional(rollbackFor = { Exception.class }) public void test() th ...

  5. Java 8中Collectors.toMap空指针异常源码分析

    当需要将一个List转换为Map时,可以使用 Java 8 中的 Collectors.toMap() 方法,Map是由key-value组成的键值对集合,在使用Collectors.toMap() ...

  6. Exception in thread “main“ java.lang.IllegalStateException: Duplicate key xxx

    debug.. hah- 这个错误是使用stream流把list收集成map搞的,原因是map的key是唯一的,如果不唯一就抛出了这个异常. 下面是异常代码 import java.util.Arra ...

  7. 编程中定义的方法报异常问题

    下面是一个"关于集合的迭代删除问题" public class  TestIterator{ public static void main(String[] args) { Li ...

  8. python中使用ZADD方法报错AttributeError: 'int' object has no attribute 'items'

    redis的版本关系 正确的完整实例如下: import pymongo import redis# 代码作用是mongodb的数据传送到redis中去 handler = pymongo.Mongo ...

  9. 解决GitHub未配置SSH key提示错误信息

    git push -u origin master Permission denied (publickey). fatal: Could not read from remote repositor ...

最新文章

  1. 涨点明显 | 全面刷新COCO检测和分割Top-1(附论文下载)
  2. python导入模块的变量_python 环境变量和import模块导入方法(详解)
  3. 深度学习(十一)RNN入门学习
  4. python贪吃蛇毕业设计_【干货|python项目实例——贪吃蛇】- 环球网校
  5. Laravel最佳实践--事件驱动编程
  6. android monkey 测试方法实践
  7. mysql 性能剖析_MySQL服务器性能剖析(一)
  8. 【python】多进程、多线程、序列
  9. 前端-CSS-10-定位
  10. word转换高清PDF
  11. matlab gui图标,matlab GUI
  12. java application.doevents_关于Application.DoEvents()的小研究
  13. (原创)如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)...
  14. coldfusion_ColdFusion 9的发布…
  15. 条形码扫描器会受到光波和无线电波的影响吗?
  16. 金融(银行)有关业务总结
  17. Mac缓解或关闭鼠标加速
  18. TN-C-S系统介绍
  19. 你可能不知道的GDB命令
  20. 清明祭:缅怀手机领域的那些先烈厂商们,你可还记得?

热门文章

  1. 2014阿里巴巴数据分析师面试
  2. UC3846的结构功能及引脚功能介绍
  3. MapReduce二次排序分区,分组优化
  4. Nginx:vts模块(监控)
  5. python打开文件写文件乱码_Python读写文件乱码问题
  6. 电大计算机网考选择题库,电大本科计算机应用基础_题库_计算机网考_真题选择题详细分析...
  7. 计算机基础知识测试2,计算机基础知识测试题2
  8. Android 网卡修改
  9. 面对世界的复杂性,如何独立思考
  10. xmi 转自百度百科