JDK8中Collectors.toMap方法报Duplicate key xxx错误信息
今天在使用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错误信息相关推荐
- JDK8中Collectors.toMap方法报Duplicate key xxx错误信息
两种 list转map方式 方式一:这种方式 重复key的话会报错 Duplicate key xxx Map deviceDtoMap = JsonUtils.toList(deviceDtoLis ...
- 如何解决Collectors#toMap报Duplicate key xxx错误问题
文章目录 前言 问题复现 解决方案 前言 最近工作中发现同事写代码遗留了一个bug,在使用Collectors.toMap的时候会出现Exception in thread "main&qu ...
- controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse
controller中执行main方法报了这个错:NoClassDefFoundError: javax/servlet/http/HttpServletResponse,如下图: NoClassDe ...
- Spring中抛出异常时,既要要返回错误信息,还要做事务回滚
情况一:如果没有在程序中手动捕获异常,如下代码事务会回滚 @Transactional(rollbackFor = { Exception.class }) public void test() th ...
- Java 8中Collectors.toMap空指针异常源码分析
当需要将一个List转换为Map时,可以使用 Java 8 中的 Collectors.toMap() 方法,Map是由key-value组成的键值对集合,在使用Collectors.toMap() ...
- Exception in thread “main“ java.lang.IllegalStateException: Duplicate key xxx
debug.. hah- 这个错误是使用stream流把list收集成map搞的,原因是map的key是唯一的,如果不唯一就抛出了这个异常. 下面是异常代码 import java.util.Arra ...
- 编程中定义的方法报异常问题
下面是一个"关于集合的迭代删除问题" public class TestIterator{ public static void main(String[] args) { Li ...
- python中使用ZADD方法报错AttributeError: 'int' object has no attribute 'items'
redis的版本关系 正确的完整实例如下: import pymongo import redis# 代码作用是mongodb的数据传送到redis中去 handler = pymongo.Mongo ...
- 解决GitHub未配置SSH key提示错误信息
git push -u origin master Permission denied (publickey). fatal: Could not read from remote repositor ...
最新文章
- 涨点明显 | 全面刷新COCO检测和分割Top-1(附论文下载)
- python导入模块的变量_python 环境变量和import模块导入方法(详解)
- 深度学习(十一)RNN入门学习
- python贪吃蛇毕业设计_【干货|python项目实例——贪吃蛇】- 环球网校
- Laravel最佳实践--事件驱动编程
- android monkey 测试方法实践
- mysql 性能剖析_MySQL服务器性能剖析(一)
- 【python】多进程、多线程、序列
- 前端-CSS-10-定位
- word转换高清PDF
- matlab gui图标,matlab GUI
- java application.doevents_关于Application.DoEvents()的小研究
- (原创)如何将Nios II硬件和软件合成一个文件(NIOS II)(硬件)(软件)(合并)...
- coldfusion_ColdFusion 9的发布…
- 条形码扫描器会受到光波和无线电波的影响吗?
- 金融(银行)有关业务总结
- Mac缓解或关闭鼠标加速
- TN-C-S系统介绍
- 你可能不知道的GDB命令
- 清明祭:缅怀手机领域的那些先烈厂商们,你可还记得?