[java之list比較]

我是太陽啦啦啦發表於2017-10-29

前言:

最近在工作中常常用到list,這篇部落格來總結一下list.以便日後方便查詢.

核心:

型別/內容

ArrayList

LinkList

Vactor

資料結構

陣列結構

連結串列結構

陣列

查詢速度

增刪效率

執行緒安全

不安全

不安全

執行緒安全(synchronized)

時間複雜度

隨機訪問時間固定

增加元素開銷固定

隨機訪問

空間複雜度

list列表結尾預留一定容量空間

每個元素消耗空間

容量空間

擴容

新容量=(舊容量*3)/2+1即1.5倍+1

 

2倍


ArrayList:底層資料結構是陣列結構,你就可以把它看成是一個可變大小的且只能裝物件的陣列。因為陣列有索引(角標)所以ArrayList的查詢速度快,而新增刪除元素速度稍慢。因為,你每刪除或者新增一個元素,你都要移動所新增或刪除元素後面的所有資料,該集合是執行緒不同步的

LinkedList:底層資料結構是連結串列結構的。連結串列資料結構是沒有索引的,當前元素只和他的前一個和後一個元素有關聯就像一串珠子一樣,該資料結構的特點是,增加刪除快,而查詢比較慢,因為增加刪除只需要找到當前元素,然後斷掉當前元素與它前一個和後一個元素的關聯即可,和陣列比,連結串列不用重複大部分的資料移動工作,但是因為沒有索引所以連結串列資料結構要一個一個的查詢資料,所以LinkedList的查詢速度稍慢

Vector:底層資料結構也是陣列結構的,除了執行緒安全問題上不同於ArrayList之外,其餘幾乎一樣。

陣列結構的查詢速度比較快,因為可以通過索引快速鎖定元素位置。連結串列結構的插入速度較快。


總結:

不斷總結,加油!


相關文章