ArrayList 默认的初始大小

通常初始大小应该在 ArrayList 构造函数中给出,如 new ArrayList(5) 。
但是如果我们不传递任何大小,则使用默认大小,即 10.

/**
* Default initial capacity.
*/
private static final int DEFAULT_CAPACITY = 10;

建议如果我们知道要存储在列表中的正确或者估计元素数量,则始终在列表构造函数中传递大小。
它消除了调整数组列表大小的需要,从而提高了性能。

https://onitroad.com 更多教程

如何增加arraylist容量——ArrayList ensureCapacity()方法

通常,我们不需要做任何事情来增加大小,因为 arraylist 会自动为我们管理大小并在需要时增加大小。

但是,为了一次又一次地删除调整大小操作,我们可以使用 ensureCapacity() 方法确保创建 arraylist 后所需的容量。

如有必要,此方法会增加 ArrayList 实例的容量,以确保它至少可以容纳该方法的最小容量参数指定的元素数量。
它在内部使用grow() 方法。

private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
        newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
        newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
}

在后端,此方法只是创建一个具有所需大小的新数组。

ArrayList ensureCapacity()方法 示例

Java 程序使用 ensureCapacity() 方法在初始化后增加数组列表的大小。

public class ArrayListExample 
{
    public static void main(String[] args) 
    {
        ArrayList<String> list = new ArrayList<>(2);

        list.add("A");
        list.add("B");

        System.out.println(list);

        list.ensureCapacity(20);

        list.add("C");
        list.add("D");
        list.add("E");
        System.out.println(list);
    }
}

程序输出。

[A, B]
[A, B, C, D, E]
Java ArrayList

Java ArrayList 在内部使用一个用于存储列表对象的后备数组对象。
所有 ArrayList 方法都对这个数组及其元素进行操作。

日期:2020-09-17 00:09:32 来源:oir作者:oir