美文网首页
Java中判断map中是否包含另一个map

Java中判断map中是否包含另一个map

作者: 缘木与鱼 | 来源:发表于2019-11-17 23:35 被阅读0次

判断map中是否包含另一个map

map不同于list, list有直接判断集合是否包含其他集合的方法。

list判断是否包含元素或集合的方法

 如果列表包含指定的元素,则返回 true。 
 boolean contains(Object o) 

如果列表包含指定 collection 的所有元素,则返回 true。 
boolean containsAll(Collection<?> c) 

map判断的方法

map 虽然没有直接判断是否包含其它map的方法,但是map有判断key是否存在于map中的方法,有判断value是否存在于map中的方法

如果此映射包含对于指定键的映射关系,则返回 true。
containsKey(Object key) 

如果此映射将一个或多个键映射到指定值,则返回 true。
containsValue(Object value) 

思路:
由于只能比较key和value,而要比较map是否存在就需要同时去比较key和value,那么将key与value 改造成特定格式的字符串,作为key或者value,再去进行比较key或者value,就可以达到想要的效果了。

示例如下:

public static void main(String[] args) {
        Map<String, String> map1 = new HashMap<>();
        Map<String, String> map2 = new HashMap<>();
        Map<String, String> mapA = new HashMap<>();
        map1.put("a", "b");
        map1.put("b", "d");
        map1.put("a", "c");
        map1.put("e", "r");

        map2.put("a", "b");
        map2.put("a", "c");

        // 遍历map1
        for (Map.Entry<String, String> entry : map1.entrySet()) {
            // 获取key
            String map1Key = entry.getKey();
            // 获取value
            String map1Value = entry.getValue();
            // 将 key:value 当作一个 key, 可以用来比较
            String map1KeyVal = map1Key + ":" + map1Value;
            // 将 value:key 当作一个 value, 可以用来比较, 二者选一个比较即可
            String map1ValKey = map1Value + ":" + map1Key;
            mapA.put(map1KeyVal, map1ValKey);
        }

        // 判断map1是否包含map2
        for (Map.Entry<String, String> entry : map2.entrySet()) {
            String map2Key = entry.getKey();
            String map2Value = entry.getValue();
            String map2KeyVal = map2Key + ":" + map2Value;
            boolean keyExist = mapA.containsKey(map2KeyVal);
            boolean valExist = mapA.containsValue(map2KeyVal);
            if (keyExist == false){
                System.out.println("map1 不包含 map2");
            }
        }
    }

相关文章

网友评论

      本文标题:Java中判断map中是否包含另一个map

      本文链接:https://www.haomeiwen.com/subject/plnmictx.html