溫馨提示×

ArrayList自動擴容怎么實現(xiàn)

小億
91
2023-12-16 09:35:25
欄目: 編程語言

在Java中,ArrayList是通過動態(tài)數(shù)組實現(xiàn)的,它會根據(jù)需要自動增加容量。當(dāng)ArrayList的容量不足以容納新元素時,會自動增加容量。

ArrayList的自動擴容是由ensureCapacity方法實現(xiàn)的。當(dāng)需要添加新元素時,ArrayList會先檢查當(dāng)前容量是否足夠,如果不夠則會調(diào)用ensureCapacity方法進行自動擴容。

ensureCapacity方法的實現(xiàn)如下:

private void ensureCapacity(int minCapacity) {
    int oldCapacity = elementData.length;
    if (minCapacity > oldCapacity) {
        int newCapacity = (oldCapacity * 3) / 2 + 1;
        if (newCapacity < minCapacity) {
            newCapacity = minCapacity;
        }
        elementData = Arrays.copyOf(elementData, newCapacity);
    }
}

該方法首先獲取當(dāng)前容量oldCapacity,然后判斷需要的最小容量minCapacity是否大于當(dāng)前容量。如果是,則計算新的容量newCapacity,通常是原容量的1.5倍加1。然后,使用Arrays.copyOf方法將元素數(shù)據(jù)elementData擴容到新的容量。

需要注意的是,ArrayList的自動擴容會導(dǎo)致數(shù)組的重新分配和拷貝,因此在頻繁添加大量元素時,可能會影響性能。為了避免頻繁的擴容操作,可以事先估計需要添加的元素數(shù)量,調(diào)用ArrayList的構(gòu)造函數(shù)或者ensureCapacity方法設(shè)置合適的初始容量。

0