1. 程式人生 > >java中ArrayList與LinkedList的原理及區別

java中ArrayList與LinkedList的原理及區別

ArrayList

ArrayList實現原理就是動態陣列,為什麼叫動態陣列呢,就是當ArrayList容量擴大時,底層的陣列的容量會自動擴大50%,並且ArrayList是執行緒不安全的。
其優點是查詢消耗的時間短,屬於隨機查詢。而相對於LinkedList而言它的新增、刪除操作要更耗時。
對於ArrayList在儲存大量資料時會大量浪費很多空間,原因就是陣列的起始容量為10,當陣列要增長時增長公式(newcapacity=(oldcapacity*3)/2+1),相當於增加的50%,這樣就會浪費大量空間,如果在你知道你要儲存資料的容量前提下,最好宣告容量大小。也可以使用trimToSize去掉多餘的空間。

LinkedList

LinkedList的實現原理基於連結串列。其優點就是方便新增和刪除元素,而arraylist的優點恰恰的LinkedList的缺點,其查詢方法消耗的時間要大於arraylist。    

總體上來看,如果你需要做大量的查詢工作建議你使用ArrayList,如果需要做大量的新增、刪除工作建議使用LinkedList.