如何检查 1 个子集是否包含小于或等于另一个子集?下面是 SMap 和 TMap。
在此示例中,执行方程式将返回 false。
sMap.entrySet().containsAll(tMap.entrySet())
我相信它返回 false,因为它试图等于 A、B、C 的计数。 {1,2,2} 不等于 {1,1,1}。然而,它应该是正确的,因为对于每个元素 A、B、C,{1,1,1}
有没有一种简单的方法来执行包含小于或等于?否则我只会写一个带有计数的循环手册。
检查一个地图是否包含另一个地图的所有内容 https://stackoverflow.com/questions/43217055/check-whether-a-map-contains-all-contents-of-another-map
验证一个 Map 中的所有键/值对都存在于另一个 Map 中 https://stackoverflow.com/questions/33024356/verify-that-all-key-value-pairs-in-a-map-are-present-in-another-map
据我所知,没有内置的方法可以做你想做的事,containsAll
回报true
当一个映射中的所有映射条目都存在于另一映射中时。
但是,正如您所说,您可以编写如下方法;
private static boolean containsAllCounts(Map<String, Integer> firstMap, Map<String, Integer> secondMap) {
String key;
int secondMapCount;
for (Map.Entry<String, Integer> entry : secondMap.entrySet()) {
key = entry.getKey();
secondMapCount = entry.getValue();
if (!firstMap.containsKey(key) || firstMap.get(key) <= secondMapCount) {
return false;
}
}
return true;
}
当有如下两张地图时;
Map<String, Integer> firstMap = new HashMap<>();
firstMap.put("A", 2);
firstMap.put("B", 2);
firstMap.put("C", 1);
Map<String, Integer> secondMap = new HashMap<>();
secondMap.put("A", 1);
secondMap.put("B", 1);
System.out.println(containsAllCounts(firstMap, secondMap));
System.out.println(containsAllCounts(secondMap, firstMap));
输出将是;
true
false
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)