我想将许多具有public int getTime()
方法的对象放入数据结构中,在该数据结构中,我可以快速获取一个给定间隔内所有对象的可迭代集合。
例如,我有以下对象及其时间戳:
Obj0 00225
Obj1 00236
Obj2 00248
Obj3 00248
Obj4 00253
Obj5 00256
是否存在一个集合,我可以在其中有效地放入这些对象,并迅速获得一个间隔作为子集合?例如:
data.subcollection(00230,00250)
将在可迭代的集合中给我Obj1
,Obj2
和Obj3
。请注意,可以有两个具有相同时间戳的不同对象。
编辑:很高兴知道操作
add()
和subcollection()
具有哪种复杂性。 最佳答案
TreeMap
可以通过TreeMap<Integer, ThingWithTime>
为您完成此操作。要获取子范围,请查询map.subMap(230, 250).values()
以获取键范围在230至250(不包括)之间的ThingWithTime
对象。和往常一样,您应该期望O(log n)的复杂性。