我有一段代码维护对给定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.