我想知道如果我使用原始数组然后重建它以添加新元素,性能是否会有所不同,如下所示:
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/