怎么解决Java8 stream操作toMap的key重复问题
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"怎么解决Java8 stream操作toMap的key重复问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决Java8 stre
千家信息网最后更新 2025年01月19日怎么解决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安全错误
数据库的锁怎样保障安全
cscs软件开发
电脑服务器自动注销
数据库企业版
系统集成中的网络安全类
创建多级下拉菜单数据库
视频网站需要数据库吗
福建数据库空投箱销售厂
重庆软件开发培训排名
埃森哲网络安全技术
中国网络安全建设
财务数据库的规定
java从达梦数据库读取数据
mdb数据库中文
我的世界免费服务器租用
网络安全手抄报简单图片大全
数据库系统与六大系统
四年级网络安全手抄报简单的
软件开发部经理考核
单位内部数据库建设
商家厂家被服务器套路
国家网络技术级别
网络安全我来讲 低年级
数据库及其应用 课后答案
宁大网络安全
福建软件开发公司排名
如何开展网络安全保卫工作
不属于网络安全基础是
济南服务器硬盘
提取日期中某段数据库
济南市政府网络安全应急预案