我想知道比较这两个HashMaps的最佳方法。我想验证它们是否相同,如果不相同,有什么区别。如果它很重要,那么我想知道第二个有/没有第一个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);
感谢您的帮助。
答案 0 :(得分:6)
答案 1 :(得分:2)
HashMap.equals
会告诉您它们是否相同(相同的键和值),但其余的则必须自行滚动。
您需要迭代一个keyset()
的{{1}},在另一个的HashMap
中查找它,如果找到则比较这些值。
然后,你必须反过来,寻找第二个不存在的第二个键。您可以使用keySet()
方法。
答案 2 :(得分:0)
你知道地图的.equals() method会告诉你两个地图是否相等,对吗?
如果他们不平等,你将不得不解析他们两个并自己找出差异。
答案 3 :(得分:0)
在我的脑海中,您可以先使用HashMap.equals()来判断它们是否不同,然后获取每个hashmap的keySet并进行比较:
What is the fastest way to compare two sets in Java?
然后,一旦掌握了差异,就可以在价值集上重复这个过程。