一. 引言
其實想知道LinkedList是個啥,知道什么是鏈表,什么是數組即可
數組特點
- 在內存中,數組是一塊連續的區域.
- 數組需要預留空間,在使用前要先申請占內存的大小,可能會浪費內存空間.三種情況
- 有空間沒有被使用
- 太多就要擴容數組
- 更換數組
- 插入,刪除效率低.因為其連續性,插入和刪除一個元素其后面的元素都要向前或向后移動
- 隨機讀取效率高.因為數組是連續的,知道每一個數據的內存地址,可以直接找到給地址的數據
- 不好擴展,有時候數組空間不夠要重新定義數組
鏈表特點
- 在內存中可以存在任何地方,不要求連續
- 每一個數據都保存了下一個數據的內存地址,通過這個地址找到下一個數據.
- 增加數據和刪除數據很容易.只需要把自己位置告訴前面那個元素就行
- 查找數據時效率低,因為不具有隨機方文星,所以訪問某個數據時要從第一個數據開始訪問
- 不指定大小,口占方便.鏈表大小不用定義
數組優點
- 隨機訪問強
- 查找速度速度快
數組缺點
- 插入和刪除效率低
- 可能浪費內存
- 內存空間要求高,必須有足夠的連續內存空間
- 數組大小固定,不能動態拓展
鏈表優點
- 插入刪除速度快
- 內存利用率高,不會浪費內存
- 大小沒有固定,拓展很靈活
鏈表的缺點
- 不能隨機查找,必須從第一個開始遍歷,查找效率很低
二. ArrayList和LinkList的區別
雖然上面在說數組和鏈表,可是並不是說數組就完全等於ArrayList
ArrayList特點
ArrayList可以看成自動增長容量的數組,其底層實現就是數組
- 新增數據空間判斷,新增數據的時候判斷是否有空閑空間存儲
- 擴容需要申請新的連續空間
- 把老的數組復制過去
- 新加內容
- 回收老的數組空間
ArrayList在初始化的時候最好指定長度,指定長度性能比不指定長度性能好很多,數據量越大越明顯,因為這樣不用重復申請空間,復制數組,摧毀老的分配空間了.
LinkList特點
LinkList是一個雙鏈表,在添加和刪除元素時由比ArrayList更好的性能.但在get與set方面弱於ArrayList當然,這些對比都是值數據量很大或者操作很頻繁
- 鏈表不需要連續的空間
- 大小不固定