【问题标题】:Tuning collection to hold large number of objects调整集合以容纳大量对象
【发布时间】:2011-06-08 21:12:47
【问题描述】:

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

我并没有真正考虑专用线程等,而是更多地考虑负载因素(对于上述情况,我是否需要触及这个?)。

谢谢

【问题讨论】:

  • 这真的在很大程度上取决于实际的具体集合实现。 ArrayList 在内部实际上是一件相当微不足道的事情,除了选择正确的初始大小之外没有什么可做的。其他类型的集合实现可能有很多注意事项。

标签: java performance collections scalability


【解决方案1】:

另一种方法:

既然我们在谈论如此庞大的收藏,那会“吃掉”你的 RAM,
我认为您应该考虑将此集合存储在数据库中,并仅在必要时读取/写入/更新。

【讨论】:

  • 同意。也许集合的大小会急剧增加,RAM 无法容纳。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    你可以这样做:

    new ArrayList<T>(10000);
    

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

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 2015-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多