'clear all values of hashmap except two key/value pair

I have a HashMap with hundred of key/value pairs.

Now I have to delete all key/values except 2 key/value. I have use this way :

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);
}   

But java 8 introduced removeIf() for these kind of condition. How can I solve this problem with removeIf() method ?



Solution 1:[1]

You'll need to it like this :

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

It will iterate over the keys and remove the ones for those the key is not one of or two required keys

Solution 2:[2]

yet shorter (since Java 2):

map.keySet().retainAll(myKeys);

Since keySet() still wraps the original HashMap, its #retainAll() affects the Map.

myKeys is a collection of keys, e.g.: myKeys = List.of("key1", "key2")

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2