性能原始数组与 ArrayList

Nic*_*aus 0 java arrays performance arraylist

我想知道如果我使用原始数组然后重建它以添加这样的新元素,性能是否会有所不同:

AnyClass[] elements = new AnyClass[0];

public void addElement(AnyClass e) {
    AnyClass[] temp = new AnyClass[elements.length + 1];
    for (int i = 0; i < elements.length; i++) {
        temp[i] = elements[i];
    }
    temp[elements.length] = e;
    elements = temp;
}
Run Code Online (Sandbox Code Playgroud)

或者如果我只是使用ArrayList添加元素。

我不确定这就是我问的原因,它的速度是否相同,因为 ArrayList 的构建方式与我对原始数组的构建方式相同,还是确实存在差异,即使我重新构建原始数组,它也总是更快每次我添加一个元素?

Tod*_*doy 5

ArrayLists 以类似的方式工作,但不是在每次达到限制时将容量加倍时重建。因此,如果您不断向它添加 ArrayLists 会更快,因为重新创建数组相当慢。因此,如果您不经常添加内存,您的实现可能会使用更少的内存,但就速度而言,大多数时候它会变慢。

  • @Nickolaus:正确的解决方案是使用另一个构造函数创建一个预先确定大小的 `ArrayList`。 (2认同)