ArrayList和LinkedList和Vector的區別


 

名單主要有數組列表,鏈表與矢量幾種實現。

 

這三者都實現了List接口,使用方式也很相似,主要區別在於因為實現方式的不同,所以對不同的操作具有不同的效率。

 

ArrayList是一個可改變大小的數組。當更多的元素加入到ArrayList中時,其大小將會動態地增長。內部的元素可以直接通過get與set方法進行訪問,因為ArrayList本質上就是一個數組。

 

LinkedList是一個雙鏈表,在添加和刪除元素時具有比ArrayList更好的性能。但在get與set方面弱於ArrayList。

 

當然,這些對比都是指數據量很大或者操作很頻繁的情況下的對比,如果數據和運算量很小,那么對比將失去意義。

 

Vector和ArrayList類似,但屬於強同步類。如果你的程序本身是線程安全的(thread-safe,沒有在多個線程之間共享同一個集合/對象),那么使用ArrayList是更好的選擇。

 

矢量和的ArrayList在更多元素添加進來時會請求更大的空間.Vector每次請求其大小的雙倍空間,而ArrayList的每次對大小增長50%。

 

而LinkedList還實現了Queue接口,該接口比List提供了更多的方法,包括offer(),peek(),poll()等。

 

注意:默認情況下ArrayList的初始容量非常小,所以如果可以預估數據量的話,分配一個較大的初始值屬於最佳實踐,這樣可以減少調整大小的開銷。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM