我有一个包含数百个键/值对的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
之一或两个必需
更短(自Java 2以来(:
map.keySet().retainAll(myKeys);
由于 keySet(( 仍然包装原始 HashMap,因此它的 #retainAll(( 会影响 Map。
myKeys 是键的集合,例如:myKeys = List.of("key1", "key2"(