我想将许多具有public int getTime()方法的对象放入数据结构中,在该数据结构中,我可以快速获取一个给定间隔内所有对象的可迭代集合。

例如,我有以下对象及其时间戳:

Obj0   00225
Obj1   00236
Obj2   00248
Obj3   00248
Obj4   00253
Obj5   00256


是否存在一个集合,我可以在其中有效地放入这些对象,并迅速获得一个间隔作为子集合?例如:data.subcollection(00230,00250)将在可迭代的集合中给我Obj1Obj2Obj3

请注意,可以有两个具有相同时间戳的不同对象。

编辑:很高兴知道操作add()subcollection()具有哪种复杂性。

最佳答案

TreeMap可以通过TreeMap<Integer, ThingWithTime>为您完成此操作。要获取子范围,请查询map.subMap(230, 250).values()以获取键范围在230至250(不包括)之间的ThingWithTime对象。和往常一样,您应该期望O(log n)的复杂性。

09-25 21:37