我正在尝试检查地图是否包含另一个地图的所有内容。
例如,我有一个mapA,它是Map<String, List<String>>
,元素是:
“1” - &gt; [ “一”, “B”]
“2” - &gt; [ “C”, “d”]
另一个MapB也是Map<String, List<String>>
,元素是:
“1” - &gt; [“一个”]
“2” - &gt; [ “C”, “d”],
我想创建一个函数比较(mapA,mapB),在这种情况下将返回false。
这样做的最佳方式是什么?
由于
答案 0 :(得分:5)
在compare(mapA, mapB)
方法中,您只需使用:
return mapA.entrySet().containsAll(mapB.entrySet());
答案 1 :(得分:1)
你需要的是这个 -
boolean isStrictlyDominate(LinkedHashMap<Integer, HashSet<Integer>> firstMap, LinkedHashMap<Integer, HashSet<Integer>> secondMap){
for (Map.Entry<Integer, HashSet<Integer>> item : secondMap.entrySet()) {
int secondMapKey = item.getKey();
if(firstMap.containsKey(secondMapKey)) {
HashSet<Integer> secondMapValue = item.getValue();
HashSet<Integer> firstMapValue = firstMap.get(secondMapKey) ;
if(!firstMapValue.containsAll(secondMapValue)) {
return false;
}
}
}
return !firstMap.equals(secondMap);
}
(如果你不想检查严格的统治,那么return
在return
陈述时只有res/layout/my_layout.xml
res/layout-small/my_layout.xml
res/layout-large/my_layout.xml
res/layout-xlarge/my_layout.xml
答案 2 :(得分:0)
试试这个代码:
Assert.assertTrue(currentMap.entrySet().containsAll(expectedMap.entrySet()));
答案 3 :(得分:0)
你可以试试这个。
static boolean compare(Map<String, List<String>> mapA, Map<String, List<String>> mapB){
return mapA.entrySet().containsAll(mapB.entrySet());
}
假设,提供的数据是这样的:
Map<String, List<String>> mapA = new HashMap<>();
Map<String, List<String>> mapB = new HashMap<>();
mapA.put("1", Arrays.asList("a","b"));
mapA.put("2", Arrays.asList("c","d"));
mapB.put("1", Arrays.asList("a"));
mapB.put("2", Arrays.asList("c", "d"));
System.out.println(compare(mapA, mapB));
在这种情况下,compare(mapA, mapB)
方法将返回 false。
但假设提供的数据是这样的:
Map<String, List<String>> mapA = new HashMap<>();
Map<String, List<String>> mapB = new HashMap<>();
mapA.put("1", Arrays.asList("a","b"));
mapA.put("2", Arrays.asList("c","d"));
mapB.put("1", Arrays.asList("a", "b"));
mapB.put("2", Arrays.asList("c", "d"));
System.out.println(compare(mapA, mapB));
在这种情况下,我编写的 compare(mapA, mapB)
方法将返回 true。
compare(mapA, mapB)
方法基本上用mapB检查mapA中的所有条目,如果相同返回yes,否则返回false;