Java HashMap <String,List <String >>()比较

Gre*_*een 5 java collections list hashmap

我想知道比较这两个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);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Mis*_*ble 2

HashMap.equals会告诉你它们是否相同(相同的键和值),但其余的你必须自己滚动。

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

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