我试图删除HashMap中除指定密钥集之外的所有条目。例如,假设HashMap numToalphaMap有条目1--
出于性能考虑,您可以首先确定可以保留的键集是大还是小。如果它很小,您可以创建一个新的HashMap并在新HashMap中分配键值对。否则,您可以迭代并删除不在集合中的键值,如下所示:
for (Map.Entry<String, String> entry : map.entrySet()) {
if (keySet.contains(entry.getKey())) {
entry.remove();
}
}
如果您使用的是Java 8,那么下面的解决方案呢?
Set<Integer> keysToKeep = new HashSet<>();
keysToKeep.add(1);
keysToKeep.add(2);
Map<Integer, String> intToStringMap = new HashMap<>();
intToStringMap.put(1, "a");
intToStringMap.put(2, "b");
intToStringMap.put(3, "c");
intToStringMap.put(4, "d");
Map<Integer, String> filteredMap =
intToStringMap.entrySet().stream()
.filter(x -> keysToKeep.contains(x.getKey()))
.collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
Java 7版本:
Iterator<Map.Entry<Integer, String>> entryIterator = intToStringMap.entrySet().iterator();
while (entryIterator.hasNext()) {
Map.Entry<Integer, String> entry = entryIterator.next();
if(!keysToKeep.contains(entry.getKey())) {
entryIterator.remove();
}
}
最简单的方法(在Java 8中)就是删除所有不在keySet
中的键:
map.keySet().removeIf(k -> !keySet.contains(k));
问题内容: 我需要从数据库中删除除前两个选定日期以外的所有日期: 我想在一个查询中删除除前两个日期以外的所有日期。 问题答案:
问题内容: 我编入索引的Elasticsearch文档包含许多字段。我一直在使用match_all查询来获取结果。我想从match_all中排除一些字段,这可能吗? 问题答案: 在Elasticsearch中,您可以使用部分字段来过滤字段。 例:
我在Java中有一个< code>HashMap: 我需要的是删除重复条目(“1”,1)[当键和值都重复时]。我搜索并只找到了“如何删除重复的键/值”。有人能帮忙吗?
我需要为我的QGIS项目加载几个矢量层,这样我就可以在每个层中测试我的脚本的每个功能。然而,最后我想只做一两层兴趣,而放弃其他的,所以我想自动做。 我用一些层成功地做到了这一点,但有一层给我带来了问题,我还没有弄清楚原因。 这里有一些代码: 加载层(几乎可以肯定,这不是问题): 现在,我创建了这个函数来删除所有加载的层,除了我想使用的层。,这仅仅是因为我试图理解这个问题。 然后,我创建了一个新的层
del key1 key2 ....keyN 返回1表示存在,0不存在
我想知道如何使用正则表达式删除除所有图像标记之外的所有内容。 我已经试过了: (?s)^[^ (?s)^([^ 有谁知道如何将这 2 个组合为多个图像? 下面是我想应用它的内容示例: 我期望的结果应该是: