0

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

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

如上所示,我已经获取了两个地图的键,然后比较了与键对应的值,因此它匹配,因为具有相同值的不同地图都对应于第一个键,因此它应该在控制台上打印两个地图具有相同的语句与键对应的值,如果不是,则应打印两个映射具有不同的值对应于键,请告知如何实现。

4

2 回答 2

0

如何用番石榴做到这一点:

  1. 使用Sets.symmetricDifference()Sets.difference()查找键之间的差异。Sets.intersection()找到常用键。
  2. 如果对称差为空,则迭代公共密钥。如果顺序很重要,则将列表包装成HashSets 或s 并应用于包装的集合。LinkedHashSetSets.difference()
于 2013-11-13T16:57:52.343 回答
0

您的陈述有点令人困惑,两个地图的键 1 处的值都是列表。

multimap1       multimap2

1   abc         1  abc

不正确,因为这些不是键为 1 的映射的值,它只是值的一部分,因为列表中的其余字符串也是值的一部分。

如果您要比较两个列表的值,这在一定程度上取决于它们相等的含义。如果它们必须以相同的顺序具有相同的值,则只需按索引检查两个列表的索引。如果它们只需要具有相同的值并且顺序无关紧要,则检查一个的所有元素是否在另一个中,反之亦然

于 2013-11-13T16:48:07.547 回答