我有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);
}
Run Code Online (Sandbox Code Playgroud)
但是 java 8 引入removeIf()
了这些条件。我怎样才能用removeIf()
方法解决这个问题?
azr*_*zro 10
你需要这样:
map.keySet().removeIf(k -> !(k.equals(Constants.search) || k.equals(Constants.context)));
Run Code Online (Sandbox Code Playgroud)
它将迭代keys
并删除那些key
不需要的那些keys
map.keySet().retainAll(myKeys);
Run Code Online (Sandbox Code Playgroud)
由于keySet()仍然包装了原始的HashMap,因此它的#retainAll()会影响Map。
myKeys 是键的集合,例如:myKeys = List.of("key1", "key2")
归档时间: |
|
查看次数: |
3740 次 |
最近记录: |