怎么解决Java8 stream操作toMap的key重复问题
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇内容主要讲解"怎么解决Java8 stream操作toMap的key重复问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决Java8 stre
千家信息网最后更新 2025年11月09日怎么解决Java8 stream操作toMap的key重复问题
本篇内容主要讲解"怎么解决Java8 stream操作toMap的key重复问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决Java8 stream操作toMap的key重复问题"吧!
准备以下User对象集合 ,构造方法User(Long Id, String username)
ListuserList = new ArrayList<>(); userList.add(new User(1L, "aaa")); userList.add(new User(2L, "bbb")); userList.add(new User(3L, "ccc")); userList.add(new User(2L, "ddd")); userList.add(new User(3L, "eee"));
当进行普通toMap操作时
Mapmap = userList.stream() .collect(Collectors.toMap(User::getId, User::getUsername);
就会报错,说明处理到已存在的key,其对应value为bbb
java.lang.IllegalStateException: Duplicate key bbb at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133) at java.util.HashMap.merge(HashMap.java:1253) at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320) at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
解决方式就在Java8提供的Collectors.toMap() 方法中,其第三个参数就是当出现 duplicate key的时候的处理方案
方案一: 出现重复时,取前面value的值,或者取后面放入的value值,则覆盖先前的value值
Mapmap = userList.stream() .collect(Collectors.toMap(User::getId, User::getUsername, (v1, v2) -> v1));
Mapmap = userList.stream() .collect(Collectors.toMap(User::getId, User::getUsername, (v1, v2) -> v2));
方案二: Map的value可以储存一个list,把重复key的值放入list,再存到value中
userList.stream().collect(Collectors.toMap(User::getId, e -> Lists.newArrayList(e.getUsername()), (ListoldList, List newList) -> { oldList.addAll(newList); return oldList; }));
到此,相信大家对"怎么解决Java8 stream操作toMap的key重复问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
问题
方案
方法
内容
处理
学习
实用
普通
更深
三个
兴趣
参数
实用性
实际
对象
就是
操作简单
方式
时候
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发模型分析工具
数据库应用开发技术介绍
共享干衣机软件开发公司
国家网络安全周绘画作品
软件开发文科有用吗
黎明杀机手游版如何连接服务器
云锁服务器端
黄浦区网络技术服务公司
七日杀加入游戏没有服务器
剑网三 服务器列表
网络安全与舆情存在的问题
华东师范大学公共数据库系统
qq心悦数据库
西安泰拉互联网科技有限公司
魔兽怀旧服各服务器职业
服务器页面跳转
武汉市网络安全监督局长
达梦数据库修改字段的sql语句
网络安全法2017年内容
网络技术咨询直销价格
软件开发需要的法律
服务器常见硬盘问题
广州勤钻网络技术有限公司
四年级网络安全手抄报大全
云服务器的远程管理在哪
数据库软件价格及图片表
服务器修改管理员
软件开发费包括什么内容
服务器项目管理流程
网络技术基础查看端口的命令