清除除两个键/值对之外的所有hashmap值

时间:2017-08-04 11:45:26

标签: java collections

我有一个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()方法解决此问题?

2 个答案:

答案 0 :(得分:2)

你需要这样:

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

它将遍历keys并删除那些key不是其中之一或两个所需的keys

答案 1 :(得分:1)

更短:

map.keySet().retainAll("key1", "key2");