清除hashmap中除两个键/值对之外的所有值

问题描述 投票:0回答:2

我有一个

HashMap
,其中有数百个键/值对。

现在我必须删除除 2 键/值之外的所有键/值。 我用过这个方法:

if(map!=null){
     String search = map.get(Constants.search);
     String context = map.get(Constants.context);
     map = new HashMap<>();
     map.put(Constants.search,search);
     map.put(Constants.context,context);
}   

但是 java 8 为此类情况引入了

removeIf()
。如何用
removeIf()
方法解决这个问题?

java collections
2个回答
12
投票

你需要这样:

map.keySet().removeIf(k -> !(k.equals(Constants.search) || k.equals(Constants.context)));

它将迭代

keys
并删除那些
key
不是必需的一个或两个
keys


6
投票

更短(自 Java 2 起)

map.keySet().retainAll(myKeys);

由于

keySet()
仍然包裹着原来的HashMap,它的
#retainAll()
会影响Map。

myKeys 是键的集合,例如:

myKeys = List.of("key1", "key2")
© www.soinside.com 2019 - 2024. All rights reserved.