【发布时间】:2014-02-04 17:54:39
【问题描述】:
假设我有两张地图:
Map mapA = new HashMap();
Map mapB = new HashMap();
mapA.put("JEETENDRA", "24");
mapA.put("AHUJA", "24"); --1A
mapA.put("AHUJA", "25");---2A
mapA.put("PAL", "24");
mapB.put("AHUJA", "24");
mapB.put("JEETENDRA", "24");---1B
mapB.put("PAL", "24");
现在我想通过键和值来比较这两个地图,因为 2A 和 1A 具有共同的键。 理想情况下,我知道它是错误的,因为键对于 map 应该是唯一的,但是在代码中我正在检索两列记录并将其存储为 map。
MapA 在操作之前。
MapB 经过一些操作。
【问题讨论】:
-
mapA不存在,因此无法检查。 -
您确实意识到值 1A 将被删除。 javadocs read "将指定值与此映射中的指定键关联。如果映射先前包含键的映射,则替换旧值。" -- 您可能需要考虑嵌套数据结构,例如
Map<String, Set<String>>来存储与单个键关联的多个值。 -
mapA 只有一个键“AHUJA”的条目,因为现有键的值在
put上被覆盖。 -
你能推荐合适的收藏,我可以使用,我不想专门使用谷歌的 Guava 库。谢谢大佬!!!
-
这个问题真的没有意义。您想比较两张地图并存储“结果”,但您从不指明是什么比较。此外,您违反了其他人指出的基本地图行为(地图中不存在“1A”,根据您的代码,“AHUJA”的值仅为“25”)。您注意到这是“理想错误”(这不仅是理想错误,而且实际上是错误的),但没有做出任何调整或为此或解释您想要什么。