行业资讯 2025年08月6日
0 收藏 0 点赞 603 浏览 1504 个字
摘要 :

文章目录 1.合并两个HashMap并忽略重复键 2.合并两个Map并组合重复键的值 学习如何合并两个HashMap,可以选择忽略重复的键(覆盖值)或处理重复的键。 1.合并两个HashM……




  • 1.合并两个HashMap并忽略重复键
  • 2.合并两个Map并组合重复键的值

学习如何合并两个HashMap,可以选择忽略重复的键(覆盖值)或处理重复的键。

1.合并两个HashMap并忽略重复键

这是一个简单的解决方案。使用firstMap.putAll(secondMap)方法,将secondMap中的所有映射复制到firstMap中。

由于我们知道HashMap不允许重复的键,所以当我们以这种方式合并这些映射时,对于firstMap中的重复键,其值将被secondMap中相同键的值覆盖。

让我们来看一个例子。在下面的例子中,两个映射都有一个键为“4”的条目。合并后,我们在最终映射中来自第二个映射的条目。

//map 1
HashMap<Integer, String> firstMap = new HashMap<>();
firstMap.put(1, \"A\");
firstMap.put(2, \"B\");
firstMap.put(3, \"C\");
firstMap.put(4, \"D\");
//map 2
HashMap<Integer, String> secondMap = new HashMap<>();
secondMap.put(4, \"F\"); //合并时它将用F代替D
secondMap.put(5, \"G\"); //添加新的键值对
//合并map
firstMap.putAll(secondMap);
System.out.println(firstMap);// 输出:{1=A, 2=B, 3=C, 4=F, 5=G}

2.合并两个Map并组合重复键的值

如果我们想处理映射中存在重复键的情况,并且不想丢失任何映射和键的数据,那么我们可以利用Java 8中添加的Map.merge()函数。

merge()函数接受3个参数:键、值和用户提供的BiFunction,用于合并重复键的值。

在我们的示例中,我们想要将重复键“4”的值(来自两个映射)追加在一起。

//map 1
HashMap<Integer, String> firstMap = new HashMap<>();
firstMap.put(1, \"A\");
firstMap.put(2, \"B\");
firstMap.put(3, \"C\");
firstMap.put(4, \"D\");
//map 2
HashMap<Integer, String> secondMap = new HashMap<>();
secondMap.put(4, \"F\"); //合并时它将用F代替D
secondMap.put(5, \"G\"); //添加新的键值对
//合并map
secondMap.forEach((key, value) -> firstMap.merge(key, value, String::concat));
System.out.println(firstMap); // 输出:{1=A, 2=B, 3=C, 4=DF, 5=G}

注意键“4”的值。在第一个映射中它的值为D,在第二个映射中为F。在合并的映射中,它是一个组合值,如”DF”。

我们可以在提供的BiFunction中编写任何合并逻辑。例如,如果我们想要追加值并在值D和F之间放置一个分隔符,那么我们可以编写自己的BiFunction。

secondMap.forEach(
     (key, value) -> firstMap.merge(key, value, (v1, v2) -> v1.equalsIgnoreCase(v2) ? v1 : v1 + \"-\" + v2)
);

现在输出是一个连接的值,值D和F之间有一个分隔符:

{1=A, 2=B, 3=C, 4=D-F, 5=G}

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9353.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号