ArrayList是一種基于動態數組實現的List接口,它可以根據需要動態地增長容量。當需要往ArrayList中添加元素時,如果當前容量不足,則會進行擴容操作。
ArrayList的擴容機制如下:
初始化時,ArrayList默認容量為10,當需要添加元素時,先判斷當前元素個數是否達到容量上限,如果沒有達到,則直接添加元素。
如果當前元素個數已經達到容量上限,則進行擴容操作。擴容操作會新建一個容量為原來的1.5倍的數組,然后將原數組中的元素復制到新數組中。
對于大量元素的添加,擴容會成為瓶頸,因為它需要將原數組中的元素復制到新數組中,這個過程需要一定的時間。
需要注意的是,在多線程環境中,ArrayList是非線程安全的,因為多個線程可能同時對同一個ArrayList進行修改,這時候需要使用線程安全的List實現,如CopyOnWriteArrayList。