2011-01-14 76 views
4

如果一个集合(如arraylist)将以千位的形式存储自定义对象(例如具有多个属性的Person),那么在我的代码或集合的构造函数中是否有任何操作为如此庞大的收藏做准备。调整集合以容纳大量对象

我并没有真正想到专用的线程等,但更多的负载因子(我需要触摸这个上述场景?)。

感谢

+0

这真的很大程度上取决于实际的具体收集实施。一个ArrayList实际上是一个相当微不足道的事情,除了选择正确的初始大小外,没有太多的事要做。其他类型的集合实现可能有很多考虑因素。 – Affe 2011-01-14 00:38:41

回答

6

我只是初始化集合的大小将接近最终的尺寸,以尽量减少resizings数量:

List<Person> persons = new ArrayList<Person>(1024); 
8

你可以这样做:

new ArrayList<T>(10000); 

其预分配指定大小的数组(如10000),因此它不具有重新分配,你添加元素。除此之外,你无能为力。另外 - 它与ArrayList的存储参数无关,因此信息无法帮助您进行优化。

11

一种不同的方法:

由于我们是谈论这样一个巨大的收藏,这将“吃掉”你的RAM,
我认为你应该考虑将这个集合存储在数据库中,并在必要时读取/写入/更新。

+3

同意。也许收集的规模将大大增加,RAM不能成立。 – 2011-01-14 01:22:22