首先,ArrayList和LinkedList都是Java中常見的容器類,都實現了list接口;但是因為各自實現list接口時,采用的數據結構不一樣,導致他們在使用上存在差異。
下面就總結一下:
1. ArrayList是基於數組來實現的線性表,只不過它是可以動態擴展的。如果不指定ArrayList初始容量值,那麼其采用默認的值10;若果向ArrayList中添加對象引用時,已經無法容納時,會自動的擴展,擴展的系數為1.5;
2. ArrayList對於按照索引值查找是非常快速的,時間復雜度為O(1); 但是對於插入和刪除就有多余的移動拷貝的消耗處理,時間復雜度為O(n);
3. LinkedList是基於雙向鏈表的數據結構實現list接口,所以查找的執行效率較低,時間復雜度為O(n);
4. LinkedList對於插入和刪除,執行效率較高,時間復雜度為O(1);
5. 從存儲上看,LinkedList比ArrayList的內存消耗更高,因為每一個結點都需要有格外的兩個結點的引用來表示;
注:能力有限,如有錯誤,請不吝賜教!