Java HashMap>() 比较
我想知道比较这两个 HashMap 的最佳方法。我想验证一下它们是否相同,如果不同,有什么区别。如果这很重要,那么我想知道第二个哈希图具有/不具有第一个哈希图所具有的内容。我需要知道一个键是否有另一个键没有,以及每个键的值列表差异。我希望有一种简单的方法来映射它,但不确定。基本示例:
HashMap<String, List<String>> hmOne = new HashMap<String, List<String>>();
List<String>l1 = new ArrayList<String>();
l1.add("one");
l1.add("two");
l1.add("three");
l1.add("four");
l1.add("five");
hmOne.put("firstkey", l1);
l1 = new ArrayList<String>();
l1.add("1");
l1.add("2");
l1.add("3");
l1.add("4");
l1.add("5");
hmOne.put("secondkey", l1);
HashMap<String, List<String>> hmTwo = new HashMap<String, List<String>>();
List<String>l2 = new ArrayList<String>();
l2.add("one");
l2.add("two");
l2.add("four");
l2.add("five");
hmTwo.put("firstkey", l2);
l2 = new ArrayList<String>();
l2.add("1");
l2.add("3");
l2.add("4");
l2.add("5");
hmTwo.put("secondkey", l2);
感谢您的帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
番石榴 具有
Maps.difference(map1, map2)
guava has
Maps.difference(map1, map2)
HashMap.equals 会告诉你它们是否相同(相同的键和值),但其余的你必须自己滚动。
您需要迭代一个
HashMap
的keyset()
,在另一个 HashMap 的keySet()
中查找,如果找到则进行比较价值观。然后,您必须执行相反的操作,在第二个中查找第一个中不存在的键。您可以使用
Set
方法来实现此目的。HashMap.equals
will tell you if they are identical (same keys and values) but the rest you will have to roll yourself.You will need to iterate the
keyset()
of oneHashMap
, look for it in thekeySet()
of the other and if found then compare the values.Then, you will have to do the reverse, looking for keys in the second that don't exist in the first. You can probably use
Set
methods for this.在我的脑海中,您可以首先使用 HashMap.equals() 来判断它们是否不同,然后获取每个哈希图的 keySet 并比较它们:
在 Java 中比较两个集合的最快方法是什么?
然后一旦你得到了键的差异,你就可以重复这个过程根据你的价值收藏。
Off the top of my head, you could first use HashMap.equals() to tell if they are different and then get the keySet of each hashmap and compare them:
What is the fastest way to compare two sets in Java?
Then once you've got the differences in keys, you could repeat the process on your value collections.
您知道 Map 的 .equals() 方法 会告诉您两个 Map 是否相等,对吧?
如果它们不相等,您将必须解析它们并自行找出差异。
You know that Map's .equals() method will tell you if two Maps are equal, right?
If they aren't equal, you're going to have to parse them both and figure out the differences on your own.