ArrayList 繼承AbstractList<E>,實現List、Cloneable和Serializable接口
LinkedList繼承AbstractSequentialList<E>,實現List、Cloneable和Serializable接口
元素存儲方式:
ArrayList 採用數組的方式存儲
LinkedList採用鏈表結構存儲
add:
- 對於元素的add()來說,LinkedList要比ArrayList要快一些,因爲ArrayList可能需要額外的擴容操作,當然如果沒有擴容,二者沒有很大的差別
- 對於元素的add(int, element),對於LinkedList來說,代價主要在遍歷獲取插入的位置的元素,而ArrayList的主要代價在於可能有額外的擴容和大量元素的移動
- 小結:對於簡單的元素添加,如果事先知道元素的個數,採用預置大小的ArrayList要更好,反之可以考慮LinkedList
remove:
刪除操作中,LinkedList更有優勢,一旦找到了刪除的節點,它僅僅只是斷開鏈接關係,並沒有元素複製移動的行爲,而ArrayList不可避免的又要進行元素的移動。
遍歷:
按照索引遍歷,ArrayList是更好的選擇,按照Iterator遍歷,也許LinkedList會好一些。
反過來理解,如果是ArrayList,Iterator和index遍歷都可以,如果是LinkedList,優先選擇Iterator比較好。
其他