【问题标题】:Find all Strings present as keys in a Map<String, Object>, but not in a Set<String>. Java查找在 Map<String, Object> 中作为键出现的所有字符串,而不是在 Set<String> 中。爪哇
【发布时间】:2016-12-03 00:37:32
【问题描述】:

是否有类似于set1.removeAll(set2); 的函数接受Map&lt;String, Object&gt; 并删除Set&lt;String&gt; 中存在的所有键?可以写一个像下面这样的小函数,但是标准库中有没有方法可以做到这一点?

    Map<String, Object> myMap =  ...;
    Set<String> mySet =  ... ;
    for (String string : mySet) {
        if (myMap.containsKey(string)) {
            myMap.remove(string);
        }
    }

【问题讨论】:

    标签: java dictionary set


    【解决方案1】:

    您可以从keySet 中删除,更改将反映在Map 中。

    返回此映射中包含的键的 Set 视图。该集合由地图支持,因此对地图的更改会反映在该集合中,反之亦然。如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。 set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从 map 中移除对应的映射。它不支持 add 或 addAll 操作。

    myMap.keySet().removeAll(mySet);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多