使用现有Map的subKeySet获取新地图的最快方法是什么?
示例:
现有地图是:
1|"one"
2|"two"
3|"three"
KeySet是:1,2,3
比克隆此键集并删除第一个值:2,3
获取此地图的最快方法是什么:
2|"two"
3|"three"
使用新的密钥集
答案 0 :(得分:1)
如果你删除了不必要的密钥,你已经拥有它了吗?
否则,创建一个entryset循环,并将所需的键/值对添加到新的/其他hashmap中。
您还可以使用具有附加功能的有序地图或navigablemap来过滤范围。
或者如果使用jdk 8,你可以使用它的超酷新功能:
m.entrySet().stream()
.filter(p -> p.getKey() > 1) // or whatever you want
.collect(toMap(Entry::getKey, Entry::getValue));
答案 1 :(得分:1)
Guava专门用于此目的的Maps.filterKeys()方法:
Maps.filterKeys(map, Predicates.in(keys));