我有一段代码,用于维护对具有给定 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/

10-12 05:56