比较两个不同地图的关键值

时间:2013-11-16 14:04:31

标签: java

比较两个不同地图的关键值

我有以下两个不同的地图,如下所示..

Map<Integer, List<String>> multimap1 = new HashMap<Integer, List<String>>();
List<String> someList1 = new ArrayList<String>();
someList1.add("abc");
someList1.add("def");
someList1.add("ght");
multimap1.put(1, someList1);

另一个是......

Map<Integer, List<String>> multimap2 = new HashMap<Integer, List<String>>();
List<String> someList = new ArrayList<String>();
someList2.add("abc");
someList2.add("wed");
someList2.add("ght");
multimap2.put(1, someList2);

现在请告知逻辑,因为我想要比较两个地图的值,并对应于我先取钥匙的钥匙  来自multimap1的第一张地图,也将从multimap2获取第一个键,然后比较它们的值

multimap1       multimap2

1   abc         1  abc

伙计们请建议解决方案,因为我被困在比较中,任何帮助将不胜感激,提前致谢

2 个答案:

答案 0 :(得分:2)

你在这里要问的并不完全清楚。如果我理解正确,那么你想检查multimap1中的列表是否与multimap2中的列表相同(等于)。

如果是这种情况,那么您需要了解该值实际上不是多图的1键的“abc”,而是List的对象;

<强> multimap1

Key   Value
 1    List<String>{"abc", "def", "ght"}

如果你想测试两个列表是否包含相同的元素 - 并且顺序相同 - 只需使用

multimap1.get(1).equals(multimap2.get(1));

答案 1 :(得分:1)

如果我找到你,你想在另一个列表对象值中搜索一个地图列表对象值。

map或list不关心排序,你不应该使用list iterator来获取对象和比较。如果你确定地图索引在两个地图之间是唯一的那么 执行以下操作:

  1. 从两个地图中获取索引为1的对象。然后获取first_list_object(通过迭代器)值,然后执行:

    second_list.contains(first_list_object)
    
  2. 然后为first_list

  3. 的下一个值继续使用相同的逻辑