清除除两个键/值对之外的哈希映射的所有值



我有一个包含数百个键/值对的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"(

最新更新