可以使用 TreeMap 检索给定键值以上的所有 key/value 对吗?
Can TreeMap be used to retrieve all key/value pairs above a given key value?
我有一段代码可以维护对具有给定 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
。
我有一段代码可以维护对具有给定 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
。