我想将许多具有 public int getTime()
方法的对象放入数据结构中,在其中我可以快速获取包含给定间隔之间的所有对象的可迭代集合。
例如,我有以下对象及其时间戳:
Obj0 00225
Obj1 00236
Obj2 00248
Obj3 00248
Obj4 00253
Obj5 00256
是否有一个集合可以有效地将这些对象放入其中,并快速获取一个区间作为子集合?例如: data.subcollection(00230,00250)
会给我可迭代的 Obj1
、Obj2
和 Obj3
Collection 。
请注意,可以有两个不同的对象具有相同的时间戳。
编辑:最好知道操作 add()
和 subcollection()
的复杂性。
最佳答案
TreeMap
可以为您做到这一点,使用 TreeMap<Integer, ThingWithTime>
。要获取子范围,请查询 map.subMap(230, 250).values()
获取 ThingWithTime
键在 230(含)到 250(不含)范围内的对象。像往常一样,您应该期望 O(log n) 复杂性。
关于Java - 有效获取间隔的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703159/