如何使用 NavigableIndex 从 cqengine IndexedCollection 获取第一个或最后一个项目

Pav*_*oba 5 java cqengine

我有配置的com.googlecode.cqengine.IndexedCollection对象NavigableIndex。我通常需要从索引或索引的迭代器中获取第一个或最后一个项目。

我想这应该是微不足道的。我知道我可以使用 queryOptions 对象创建 Query 对象,使用它从 IndexedCollection 检索迭代器并获取第一个对象,但我不确定它是否是最佳性能。肯定不优雅。

Pav*_*oba 1

在 miradham 的帮助下,我发现我需要记住索引,因为如果我们有更多索引,就很难找到正确的索引。它只适用于NavigableIndex,我们不能迭代基类Index

collection = new ConcurrentIndexedCollection<Data>();
index = NavigableIndex.onAttribute(Data.UNIQUE_TIMESTAMP);
collection.addIndex(index);
Run Code Online (Sandbox Code Playgroud)

当我有索引时:

try (CloseableIterator<KeyValue<String, Data>> iterator = indexUniqueTimestamp.getKeysAndValuesDescending(null).iterator()) {
        if (iterator.hasNext())
            return iterator.next().getValue();
    }
    return null;
Run Code Online (Sandbox Code Playgroud)