'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 |
