java - 具有多个可变查找属性的集合的正确数据结构

标签 java algorithm oop data-structures

如果我在内存中收集了 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/

相关文章:

java.util.ArrayList是数据结构/集合/或抽象数据类型的实现?

java - 设置实例变量 public 并且不使用 setter 方法可能会破坏在 java 中使用我的类的协作者的代码?

c - 乘积小于给定数的数对数

c++ - 如何让对象相互通信?

oop - 如何打破我的程序编码习惯?

java - 是否有任何方便的代码覆盖工具可与 JUnit 一起使用?

java - 面向对象的设计 - 形状

javascript - 按间隔对对象数组进行分组

algorithm - 高级/非常见的高效排序算法

php - 使用构造函数创建新对象时出现 undefined variable 错误