【发布时间】:2020-11-25 03:10:02
【问题描述】:
我有一个 Java 中的 HashMap 对象列表。 如果列表尚未包含具有与新 HashMap 中相同的键值对的 HashMap,我想有条件地向该列表添加更多 HashMap 对象。
这是一个示例 HashMap 列表。请注意,实际上,还有更多的键。在这里,为了简单起见,我只包括“contact_id”。
[{contact_id=16247115}, {contact_id=16247116}, {contact_id=16247117}, {contact_id=16247118}, {contact_id=16247119}]
不应允许将{contact_id=16247117} 添加到此列表中。
应该允许添加{contact_id = 74857983}。
理想情况下,我希望能够在一行代码中有条件地将多个 HashMap 添加到此列表中。如果我不执行条件检查,我可以使用语法listname.addAll(batchOfHashMaps)。我想做类似的事情,但排除列表中多余的 HashMap。
在 Java 中实现这种条件插入最有效的方法是什么?
我认为必须有一个比在 for 循环中评估列表中的每个元素更有效的解决方案。
【问题讨论】:
-
您说实际上 HashMap 包含更多键,但您也说仅当列表不包含具有“相同键值对”的列表时才要添加 HashMap。您的重复检查策略是基于列表中的 2 个具有 no 共同键值对的 HashMap,还是仅与
contact_id相关的这一对? -
如果所有映射都必须匹配,您可以简单地使用
HashSet。 -
你究竟是如何确定 HashMap 相等性的?
-
就像ajc2000 建议的那样,我的重复检查策略是基于列表中具有相同contact_id 的2 个HashMap。其他键可以有不同的值。
-
@GNG。听起来你想要一张地图或一组,而不是一个列表。订单相关吗?如果是这样,哪个顺序?键还是插入?
标签: java arrays list hashmap duplicates