gpt4 book ai didi

java - 为 Android 编程时是否需要指定列表的初始大小?

转载 作者:太空狗 更新时间:2023-10-29 14:17:53 26 4
gpt4 key购买 nike

对于 Android 编程,如果我在一个方法中创建一个 ArrayList 并且知道当我从该方法返回它时该列表有多大,我是否应该在创建它时指定列表的初始大小?

我问是因为通常我们不会费心指定初始大小,但在为移动设备编程时可能会有所不同。

谢谢。

编辑

我说的是我确实知道列表的最终大小的情况(例如,我正在从类型为 B 的对象列表中创建类型为 B 的对象列表A).

编辑2

是否有任何与此相关的性能指标?

最佳答案

是的,如果您知道列表有多大,您绝对应该指定初始大小。它将提高性能。

如果使用默认构造函数,初始大小将为 0。来自 Android documentation :

public ArrayList() Constructs a new ArrayList instance with zero initial capacity.

还有代码:

public ArrayList() {
array = EmptyArray.OBJECT;
}

因此,稍后当您添加元素时,内部 Object[] 数组 将被调整大小:

@Override public boolean add(E object) {
Object[] a = array;
int s = size;
if (s == a.length) {
Object[] newArray = new Object[s +
(s < (MIN_CAPACITY_INCREMENT / 2) ?
MIN_CAPACITY_INCREMENT : s >> 1)];
System.arraycopy(a, 0, newArray, 0, s);
array = a = newArray;
}
a[s] = object;
size = s + 1;
modCount++;
return true;
}

Here是Android的ArrayList的代码。

因此,为了不浪费时间调整大小,最好指定 ArrayList 的初始大小。

关于java - 为 Android 编程时是否需要指定列表的初始大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com