Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HashMap<;字符串,列表<;字符串>&燃气轮机;()比较_Java_List_Collections_Hashmap - Fatal编程技术网

Java HashMap<;字符串,列表<;字符串>&燃气轮机;()比较

Java HashMap<;字符串,列表<;字符串>&燃气轮机;()比较,java,list,collections,hashmap,Java,List,Collections,Hashmap,我想知道比较这两个HashMap的最佳方法。我想验证它们是否相同,如果不相同,区别是什么。如果这很重要,那么我想知道第二个hashmap有/没有第一个hashmap的内容。我需要知道一个键是否有另一个键,以及每个键的值列表差异。我希望有一个简单的方法来绘制这张地图,但不确定。基本示例: HashMap<String, List<String>> hmOne = new HashMap<String, List<String>>();

我想知道比较这两个HashMap的最佳方法。我想验证它们是否相同,如果不相同,区别是什么。如果这很重要,那么我想知道第二个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);
HashMap hmOne=newhashmap();
Listl1=新的ArrayList();
l1.添加(“一”);
l1.添加(“两”);
l1.添加(“三”);
l1.添加(“四”);
l1.添加(“五”);
hmOne.put(“第一键”,l1);
l1=新的ArrayList();
l1.添加(“1”);
l1.添加(“2”);
l1.添加(“3”);
l1.添加(“4”);
l1.添加(“5”);
hmOne.put(“第二键”,l1);
HashMap hmTwo=新的HashMap();
Listl2=新的ArrayList();
l2.添加(“一”);
l2.添加(“两”);
l2.添加(“四”);
l2.添加(“五”);
hm2.put(“第一键”,l2);
l2=新的ArrayList();
l2.添加(“1”);
l2.添加(“3”);
l2.添加(“4”);
l2.添加(“5”);
hm2.put(“第二键”,l2);

感谢您的帮助。

HashMap.equals将告诉您它们是否相同(相同的键和值),但其余部分您必须自己滚动

您需要迭代一个
HashMap
keyset()
,在另一个
keyset()
中查找它,如果找到,则比较值

然后,您将必须执行相反的操作,在第二个中查找第一个中不存在的键。您可能可以使用
Set
方法进行此操作。

有您知道地图会告诉您两个地图是否相等,对吗


如果它们不相等,您将不得不解析它们并自己找出差异。

在我的脑海中,您可以首先使用HashMap.equals()判断它们是否不同,然后获取每个HashMap的键集并比较它们:


一旦你得到了键之间的差异,你就可以在你的值集合上重复这个过程。

使用
mapOne.entrySet()
.containsAll(maptoo.entrySet())
/
.removeAll(maptoo.entrySet())
/
.retainal(maptoo.entrySet())
。可能与
mapOne
的克隆一起使用,因为这些方法是破坏性的。@ChristofferHammarström我提到了反向设置方法,但不是第一个,因为还需要比较值。这就是为什么要使用
.entrySet()
,而不是
.keySet()
。是的。对不起,我之前是瞎的。番石榴还有
列表。newArrayList(“1”、“2”、“3”、“4”、“5”)
,这将使原始代码比现在短得多。我自己编写了比较。我传入两个哈希图进行比较,然后得到第一个哈希图有哪些,第二个哈希图没有哪些,反之亦然。@Green我知道已经有一段时间了,但你能接受答案或将你自己的解决方案作为答案发布(首选)吗?问候语