从subKeySet获取subMap

时间:2014-06-09 10:54:51

标签: java

使用现有Map的subKeySet获取新地图的最快方法是什么?

示例:

现有地图是:

1|"one"

2|"two"

3|"three"

KeySet是:1,2,3

比克隆此键集并删除第一个值:2,3 获取此地图的最快方法是什么:

2|"two"

3|"three"

使用新的密钥集

2 个答案:

答案 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));