2017-04-04 44 views
3

我正在检查地图是否包含其他地图的所有内容。 例如,我有一个地图,其是一个Map<String, List<String>>,所述元素是: “1” - > [ “A”, “B”] “2” - > [ “C”, “d”]检查地图是否包含其他地图的所有内容

另一个MapB这也是一个Map<String, List<String>>,所述元素是: “1” - > [ “A”] “2” - > [ “C”, “d”],

我想创建一个功能比较(mapA,mapB)在这种情况下将返回false。

这样做的最好方法是什么?

感谢

+2

只为你的未来的自己的理智,不叫它比较。你没有比较。称之为'containsAll'或'subsumes'。 –

回答

4

里面你compare(mapA, mapB)方法,你可以简单地使用:由@Jacob摹提供

0

回答你的情况不会工作,将工作只有额外的(键,值)对在MapA中。像MapA = {1“ - > [”a“,”b“]”2“ - > [”c“,”d“]}和MapB = {1” - > [“a”,“b”] }。

什么ü需要的是这个 -

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说法正确)

相关问题