我有以下两个不同的地图,如下所示..
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
如上所示,我已经取了两个地图的关键字,然后比较了与密钥对应的值,因此它匹配,因为具有相同值的不同地图对应于第一个键,所以它应该在控制台上打印语句,地图具有相同的值,对应于键,如果不是那么它应该打印两个地图有不同的值对应的键,请告知如何实现这一点。
答案 0 :(得分:0)
您的陈述有点令人困惑,两张地图的键1的值都是List。
multimap1 multimap2
1 abc 1 abc
不正确,因为这些不是地图的值,其键为1,它只是值的一部分,因为列表中的其余字符串也是值的一部分。
如果您要比较两个列表的值,则取决于它们相等的含义。如果它们必须以相同的顺序具有相同的值,那么只需检查两个列表的索引的索引。如果他们只需要具有相同的值并且顺序无关紧要,那么检查一个元素的所有元素是否在另一个元素中,反之亦然
答案 1 :(得分:0)
如何使用番石榴做到这一点:
Sets.symmetricDifference()
或Sets.difference()
查找密钥之间的差异。 Sets.intersection()
找到常用密钥。HashSet
或LinkedHashSet
中,并将Sets.difference()
应用于已包装的广告集。