搞懂JAVA集合類--List的實現 ArrayList、Vector、LinkedList(二)

ArrayList還是Vector,在它們內部都是使用一個數組來保存數據的。開發過程中,在使用它們任何一個的時候,你都需要記住這一點。你在往一個ArrayList或者Vector裏插入一個元素的時候,如果內部數組空間不夠了,ArrayList或者Vector就要擴展它的大小。Vector在默認情況下是增長一倍的大小,而ArrayList增加50%的大小。只要你合理的使用這些類,你就可以結束你在增加新的元素的時候所付出的性能代價。設置初始化容量爲你編程過程中所能用到的最大的容量總是最好的辦法。精確的指定容量,你可以避免以後改變內部Array容量,所要付出的代價。

Vectors是可同步化的,意思就是說,任何操作Vector的內容的方法都是線程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是線程安全的。實際上Vector對所有方法進行了加鎖處理

LinkedList基於鏈表的數據結構。 對於隨機訪問get和set,ArrayList覺得優於LinkedList,因爲LinkedList要移動指針。對於新增和刪除操作add和remove,LinedList比較佔優勢,因爲ArrayList要移動數據。 LinkedList不 支持高效的隨機元素訪問。 ArrayList的空 間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間

ArrayList在元素填滿容器時會自動擴充容器大小的50%,而Vector則是100%,因此ArrayList更節省空間,LinkedList不存在這個問題

發佈了30 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章