[英]Java HashMap<String,List<String>>() Comparison
我想知道比较这两个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);
谢谢你的帮助。
HashMap.equals
会告诉你它们是否相同(相同的键和值),但其余的你必须自己滚动。
您需要遍历keyset()
一个HashMap
,在寻找它keySet()
其他的,如果找到则比较值。
然后,你将不得不反过来,寻找第二个中不存在的键。 您可以使用Set
方法。
你知道Map的.equals()方法会告诉你两个Maps是否相等,对吗?
如果他们不平等,你将不得不解析他们两个并自己找出差异。
在我的脑海中,您可以先使用HashMap.equals()来判断它们是否不同,然后获取每个hashmap的keySet并进行比较:
然后,一旦你获得了密钥的差异,就可以在价值集上重复这个过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.