1. 程式人生 > >Vector、ArrayList、LinkedList有何區別?

Vector、ArrayList、LinkedList有何區別?

       這三者都是實現集合框架中的 List,也就是所謂的有序集合,因此具體功能也比較近似,比如都 提供按照位置進行定位、新增或者刪除的操作,都提供迭代器以遍歷其內容等。但因為具體的設 計區別,在行為、效能、執行緒安全等方面,表現又有很大不同。   

     Vector 是 Java 早期提供的執行緒安全的動態陣列,如果不需要執行緒安全,並不建議選擇,畢竟同 步是有額外開銷的。Vector 內部是使用物件陣列來儲存資料,可以根據需要自動的增加容量, 當陣列已滿時,會建立新的陣列,並拷貝原有陣列資料。

     ArrayList 是應用更加廣泛的動態陣列實現,它本身不是執行緒安全的,所以效能要好很多。與 Vector 近似,ArrayList 也是可以根據需要調整容量,不過兩者的調整邏輯有所區別,Vector 在擴容時會提高 1 倍,而 ArrayList 則是增加 50%。 LinkedList 顧名思義是 Java 提供的雙向連結串列,所以它不需要像上面兩種那樣調整容量,它也不 是執行緒安全的。