垃圾收集独立arraylist建筑与比较逻辑的影响

时间:2017-08-24 16:00:52

标签: java performance arraylist garbage-collection

Java垃圾收集中的大师提问。当我们通过以下技术进行排序时,想要了解是否存在对堆内存的性能影响

具有唯一成员变量的对象集合

ArrayList<Car> 

Class Car{
boolean preferredVehicle;
}

现在我们需要将preferredVehicles排序并显示在选择列表的顶部

方法1:

  1. 创建两个列表,一个regularList和一个PreferredList
  2. 迭代CarList,如果布尔值为真,则添加到PreferredList
  3. 将非首选汽车添加到非PreferrdList
  4. 一旦Car List循环完成,将所有非首选添加到完整的首选列表
  5. 方法2: Collections.sort with Comparator

    在未来的垃圾收集和堆内存消耗中,是否存在可量化的性能差异以及哪一个更友好

2 个答案:

答案 0 :(得分:0)

方法#1是O(n),而方法#2是O(n * log n)。所以我会选择#1 至于GC,我没有看到真正的区别,主要是因为Car实例是相同的。
HTH,
Yinon

答案 1 :(得分:0)

2个列表肯定会获得更多的空间并想象列表是巨大的。并且,如果你不能预先分配所需的列表容量,添加一个元素可以导致另一个列表对象分配的大小加倍,从而更多的工作对于gc。 如果您不关心原始订单,请在同一列表中应用排序。