调整集合以容纳大量对象

时间:2011-01-14 00:29:03

标签: java performance collections scalability

如果一个集合(如arraylist)将存储数千个自定义对象(例如具有多个属性的Person),那么在我的代码或集合的构造函数中是否可以做任何事情来为这么大的集合做准备

我并不是在考虑专用线程等,而是更多地考虑负载因素(在上述场景中我是否需要触摸它?)。

由于

3 个答案:

答案 0 :(得分:11)

另一种方法:

既然我们正在谈论这样一个巨大的收藏品,那就会“吃掉”你的RAM,
我认为您应该考虑将此集合存储在数据库中,并在必要时进行读/写/更新。

答案 1 :(得分:8)

你可以这样做:

new ArrayList<T>(10000);

预先分配具有指定大小(例如10000)的数组,以便在添加元素时不必重新分配。除此之外,你无能为力。此外 - 它与ArrayList存储的是什么类型的引用并不重要,因此信息无法真正帮助您进行优化。

答案 2 :(得分:6)

我只是将集合初始化为接近最终大小的大小,以便最大限度地减少调整次数:

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