java-可以使用TreeMap检索给定键值以上的所有键/值对吗?

我有一段代码维护对给定ID的样本所做的修订图:

private Map<Long, SampleId> sampleRevisionMap = new HashMap<>();

在保持此状态的同时,其他线程可以调用以获取自给定修订号以来的所有更改.找到我要做的相关ID

public Set<SampleId> getRevisionIDs(long clientRevision) {
    return sampleRevisionMap.entrySet().stream()
                .filter(k -> k.getKey() > clientRevision)
                .map(entry -> entry.getValue())
                .collect(Collectors.toSet());
}            

简而言之,请给我所有键值高于阈值的值.

有没有一种更好的方法来使用有序映射,即java.utils.TreeMap呢?

解决方法:

是的,您可以通过致电tailMap来做到这一点:

public Collection<SampleId> getRevisionIDs(long clientRevision) {
    return sampleRevisionMap.tailMap(clientRevision).values();
}    

上面还包括映射到clientRevision的值.如果您希望上面有所有内容,请改用clientRevision 1.

上一篇:HashMap和Hashtable和TreeMap


下一篇:集合:map接口及其实现类(HashMap、TreeMap)