如果我在内存中收集了 5,000 个或更多类型为 SampleObject
的对象
class SampleObject {
...
Date getLastRefreshDate()
Status getCurrentStatus()
}
我想快速获取刷新日期早于某个值的对象的子列表,并且还能够快速获取具有特定状态的对象,什么数据结构/算法会有用?迭代列表和进行比较是否足够快?如果列表增长到 25,000 或更多怎么办?
最佳答案
A TreeMap<Date, SampleObject>
可以很容易地完成“早于”某个日期的工作——你只需使用 headMap
获取所有早于某个值的对象。
你需要一个单独的 Map<Status, List<SampleObject>>
(或者,如果您可以使用第三方库,一个 Guava Multimap
)来跟踪具有某些特定状态的对象,但我认为如果您不愿意为线性搜索付费,无论如何第二个数据结构是不可避免的。
关于java - 具有多个可变查找属性的集合的正确数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10500802/