Java8 Collectors.toMap的key重复
时间:2022-07-26
本文章向大家介绍Java8 Collectors.toMap的key重复,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
**
Map<String, BottomAccount> map = bottomAccountList.stream().collect(Collectors.toMap(BottomAccount::getGoodName, Function.identity()));
如这个地方,如果使用GoodName为map的key,货物名称有可能会重复,这时候就会报Duplicate Key的问题,其实是map的key重复了,首先查看源码:
显而易见,throwingMerger()是一个出现异常时默认执行的方法,可以看到,入参是HashMap,大胆猜测、小心求证,我们猜最终是由HashMap去执行的Merger方法,
看HashMap里的一段代码:
这就能证明当出现map的key重复时会报错Duplicate Key的异常了。
如果不想抛异常,自己给传一个新的key值用于替换原有值。
所以,
解决方案一 :给重复的Key设置一个新的值
Map<Integer, String> map = list.stream().collect(Collectors.toMap(Person::getId, Person::getName,(oldValue, newValue) -> newValue));
但是考虑到实际业务中,给重复的key设置一个新的值并不符合需求,所以,
解决方案二:使用其他字段为map的key,如主键id
Map<String, BottomAccount> map = bottomAccountList.stream().collect(Collectors.toMap(BottomAccount::getId, Function.identity()));
原来的map中的key就变成了value
map.values().stream().map(BottomAccount::getGoodName).collect(Collectors.toList())
- POJ A Knight's Journey
- React技巧5(TodoList实现)
- 求一个数n次方后的末尾数(数论/快速幂)问题描述解题思路代码实现运行结果参考
- Catch That Cow
- React技巧4(如何处理List里面的Item)
- ZOJ 3620 Escape Time II
- React技巧3(如何优雅的渲染一个List)
- FZU 电动车通行证制度
- 贪心算法总结贪心算法基本思路算法实现实例分析参考
- React技巧2(避免无意义的父节点)
- Havel定理
- React技巧1(状态组件与无状态组件的使用)
- zoj 1315 Excuses, Excuses!
- ZOJ 2724 Windows Message Queue(优先队列)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 是你们的力量,让知乎看见了!
- 视屏面试传输协议到底是TCP还是UDP
- prometheus学习笔记(1)-mac单机版环境搭建
- Metaspace内存不足导致FGC问题排查
- useful-scripts
- 清空所有 NSUserDefaults 记录
- 重温Java Web的技术细节
- 国密算法SM2加解密_签名验签图形化例子
- 链接脚本linker script的妙用
- 【TBase开源版测评】轻松愉快去O选项:TBase
- Tungsten Fabric知识库丨更多组件内部探秘
- TRTC Android端开发接入学习之环境快速搭建(三)
- 为了满足UI小姐姐要求,自己动手实现了Android面包屑效果(支持Fragment联动)
- Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试」
- 斗鱼直播带你实现:你主播最爱的Android音视频开发