3

我有 c.1,000,000 个对象需要以某种形式的数据结构存储。它们必须通过键 (ID) 是唯一的 - 但根据它们的日期排序。因此,我试图想出一种将它们存储在某种形式的数据结构中的最佳方法。性能(就执行时间而言)它是主要目标,然后是内存使用。我的想法是将对象放入树中,以便在它们进入数据结构时根据它们的日期对它们进行排序,然后我可以按顺序返回它们。但是 - 我认为根据其 ID 查找单个对象将非常缓慢。我确实想到的一个想法是有一个二级结构,它将 ID 与日期联系起来,这样我就可以减少查找单个对象所花费的时间,

关键点:

之后可能会添加对象,因此 c.1,000,000 个对象不是固定的。它们不会被更新或删除。我可能不会使用 Java 的内置比较器。我正在优化返回数据的效率 - 无论是按顺序(按日期)的完整集合,还是从其 ID 获得的单个对象。

4

2 回答 2

3

如果您在使用内存之前主要关注性能,我会使用 2 个数据结构:

ArrayList<YourClass> instancesByDate;

HashMap<SomeId,YourClass> instancesById;

这为您提供了最快的按日期遍历和 O(1) 查找(显然取决于 hashCode() )。

于 2013-03-02T10:14:23.283 回答
0

如何使用 ID => yourobject 的哈希表进行 ID 查找,以及使用日期的二级哈希表(在某种粒度级别)=> Vector<yourobject>?您可以选择日期的“粒度”,以确保每个向量中有适量的对象 - 并按日期对每个对象进行排序。

于 2013-03-02T10:09:52.127 回答