我有一段代码,用于维护对具有给定 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
。关于java - TreeMap 可以用于检索给定键值之上的所有键/值对吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37945962/