一、ArrayList簡介
ArrayList是Java中最常用的集合類之一,它可以動態地增加或刪除元素。底層實現是基於Object[]數組,數組初始長度為10,在元素個數占數組長度的70%時會自動進行擴容,擴容量為原長度的1.5倍。
當然,如果我們知道元素個數的上限,可以通過構造函數來初始化ArrayList的長度,以減少擴容的次數,從而提高效率。
二、ArrayList的add方法
在ArrayList中,添加元素最常用的方法是add,其方法簽名為:
public boolean add(E e)
其中,E代表泛型,可以是任意的類類型。
add方法的作用是將指定的元素添加到ArrayList的末尾。
在這裡,我們需要注意add方法的返回值為布爾類型,返回值為true表示添加成功,返回值為false表示添加失敗。
三、ArrayList的add方法操作示例
下面我們展示add方法的具體使用方法,代碼如下:
class Test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("A"); list.add("B"); list.add("C"); System.out.println(list); // [A, B, C] } }
在上面的代碼中,我們先創建了一個String類型的ArrayList,然後通過add方法向其中添加了三個元素,最後輸出結果為[A, B, C]。
四、ArrayList的add方法原理解析
在add方法的內部實現中,有兩個變數值需要我們了解一下,具體如下:
- elementData:Object類型數組,存儲元素的數組。
- size:int類型變數,表示ArrayList中元素的個數。
add方法會首先判斷elementData數組是否足夠存儲,如果不足,則會進行擴容(默認擴容至原長度的1.5倍),然後將新元素添加到數組末尾,並增加size的值。
其代碼實現如下:
public boolean add(E e) { ensureCapacityInternal(size + 1); elementData[size++] = e; return true; } private void ensureCapacityInternal(int minCapacity) { if (elementData == DEFAULT_CAPACITY_EMPTY_ELEMENT_DATA) { minCapacity = Math.max(DEFAULT_CAPACITY, minCapacity); } ensureExplicitCapacity(minCapacity); } private void ensureExplicitCapacity(int minCapacity) { modCount++; // overflow-conscious code if (minCapacity - elementData.length > 0) grow(minCapacity); } private void grow(int minCapacity) { // overflow-conscious code int oldCapacity = elementData.length; int newCapacity = oldCapacity + (oldCapacity >> 1); if (newCapacity - minCapacity 0) newCapacity = hugeCapacity(minCapacity); // minCapacity is usually close to size, so this is a win: elementData = Arrays.copyOf(elementData, newCapacity); }
五、ArrayList的add方法性能優化
當我們需要向ArrayList中添加大量元素時,頻繁的擴容會造成性能的下降。為了解決這個問題,我們可以通過設置ArrayList的初始長度或者擴容量來優化性能。
下面,我們將展示通過設置初始長度來進行性能優化的示例。代碼如下:
class Test { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(100000); long startTime = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { list.add("A" + i); } long endTime = System.currentTimeMillis(); long duration = endTime - startTime; System.out.println("Duration: " + duration + "ms"); } }
在上面的代碼中,我們首先設置了ArrayList的初始長度為100000,然後通過循環向其中添加了100000個元素,並列印了添加元素所耗費的時間。
通過運行上面的代碼,我們可以發現,由於設置了初始長度,添加元素所需的時間顯著降低了。
六、總結
在本篇文章中,我們詳細地介紹了Java中ArrayList的add方法,包括其作用、返回值、示例以及內部實現和性能優化等內容。
對於Java工程師而言,熟練掌握ArrayList的add方法及其性能優化技巧是非常重要的,可以在實際開發中提高代碼的效率。
原創文章,作者:XNZR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134759.html