java - 性能原语 Array 与 ArrayList

标签 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;
}

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

我不确定这就是我问的原因,它的速度是否相同,因为 ArrayList 的构建方式与我使用原始数组的方式相同,或者是否确实存在差异,原始数组总是更快,即使我每次添加元素时都会重建它?

最佳答案

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

关于java - 性能原语 Array 与 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19690728/

相关文章:

c# - 生成随机数的算法?不要使用 System.Random

python - 查找numpy数组元素的范围

javascript - 从数组中删除引号以充当函数(变量)

arrays - 二分查找运行时间

c# - 包含字符串的结构与包含字符串的类的性能

python - 处理大文件的最佳 Python Zip 模块是什么?

java - 在 Java Swing 应用程序中实现 WebSocket

java - JFrame 上没有任何绘制

Java - 删除 ArrayList 中的重复项

c++ - 数组的大小 C++