排序1,000,000个对象(不是按键) - Java

时间:2013-03-02 10:04:24

标签: java sorting data-structures abstract-data-type

我有c.1,000,000个对象需要以某种形式的数据结构存储。它们必须是唯一的密钥(ID) - 但根据其日期排序。因此,我试图想出一种将它们存储在某种形式的数据结构中的最佳方法。 性能(在执行时间方面)它是主要目标,然后是内存使用。我的想法是将对象放入树中,因此它们可以在进入数据结构时根据它们的日期进行排序,然后我可以按顺序返回它们。但是 - 我认为基于它的ID找到单个对象会非常缓慢。我想到的一个想法是有一个二级结构,它将ID与日期联系起来,这样我就可以减少查找单个对象所需的时间,或者只是通过这个ID存储所有内容(可能在HashTable中),然后进行排序当我想要归还它们时,所有1,000,000个对象(虽然这似乎需要很长时间)。

要点:

之后可以添加对象,因此不会修复c.1,000,000个对象。它们不会被更新或删除。 我不能使用Java内置的Comparator。 我正在优化返回数据的效率 - 无论这是按顺序完成的设置(按日期),还是从它的ID获得的单个对象。

2 个答案:

答案 0 :(得分:3)

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

ArrayList<YourClass> instancesByDate;

HashMap<SomeId,YourClass> instancesById;

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

答案 1 :(得分:0)

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