Java - 有效获取间隔的集合

标签 java data-structures collections

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

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

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

是否有一个集合可以有效地将这些对象放入其中,并快速获取一个区间作为子集合?例如: data.subcollection(00230,00250) 会给我可迭代的 Obj1Obj2Obj3 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/

相关文章:

java - Android Studio Webview 1101 Activity

c - K&R 在这里用这个链表做什么?

java - 返回排序后的 Java 列表,而不是就地排序

javascript - 将用户发布到其他集合时出现问题

java - 在@RequestParam中绑定(bind)列表

具有无意义类型通配符的方法的 Java API 类

java - 从队列中读取消息并将其显示给用户?

java - 在服务器上上传大文件?

具有抽象数据类型的 C 双链表

C++:隐式链表