我想知道是否有更有效的方法可以从我的 LinkedHashMap 中获取时间戳大于指定时间的对象。即比以下更好的东西:
Iterator<Foo> it = foo_map.values().iterator();
Foo foo;
while(it.hasNext()){
foo = it.next();
if(foo.get_timestamp() < minStamp) continue;
break;
}
在我的实现中,我的每个对象基本上都具有三个值:“id”、“timestamp”和“data”。这些对象是按照它们的时间戳顺序插入的,所以当我在集合上调用迭代器时,我会得到有序的结果(根据链接的 hashmap 合约的要求)。地图以对象的 id 为键,因此我可以通过 id 快速查找它们。
但是,当我通过时间戳条件查找它们时,我会得到一个带有排序结果的迭代器。这是对通用哈希图的改进,但我仍然需要在大部分范围内按顺序迭代,直到找到具有比指定时间戳更高的时间戳的下一个条目。
由于结果已经排序,是否有任何算法可以将迭代器(或集合传递给),它可以比顺序搜索更快?如果我使用树形图作为替代方案,它会提供整体速度优势,还是在后台做基本相同的事情?由于集合已经按插入顺序排序,我认为树形图有更多我不需要的开销?