我有一个
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()
方法解决这个问题?
你需要这样:
map.keySet().removeIf(k -> !(k.equals(Constants.search) || k.equals(Constants.context)));
它将迭代
keys
并删除那些 key
不是必需的一个或两个 keys
map.keySet().retainAll(myKeys);
由于
keySet()
仍然包裹着原来的HashMap,它的#retainAll()
会影响Map。
myKeys 是键的集合,例如:
myKeys = List.of("key1", "key2")