ArrayList與LinkedList的區別

ArrayList是採用數組形式保存對象,其特色是:查詢快,增刪慢。數組

LinkedList是採用鏈式存儲,經過節點直接彼此鏈接來實現的,其特色是:查詢慢,增刪快。性能

具體解釋:spa

ArrayList實際上是包裝了一個數組 Object[],當實例化一個ArrayList時,一個數組也被實例化,當向ArrayList中添加對象是,數組的大小也相應的改變。這樣就帶來如下有缺點:對象

快速隨即訪問 你能夠隨即訪問每一個元素而不用考慮性能問題,經過調用get(i)方法來訪問下標爲i的數組元素。內存

向其中添加對象速度慢 當你建立數組是並不能肯定其容量,因此當改變這個數組時就必須在內存中作不少事情。get

操做其中對象的速度慢 當你要想數組中任意兩個元素中間添加對象時,數組須要移動全部後面的對象。基礎

ArrayList的初始默認長度是10,當長度不夠時,會自動建立一個新的ArrayList,長度在原有的基礎上增長50%, 即:15,同時把原有的數據放到新的ArrayList中,再把新數據插入到新的ArrayList。List

LinkedList是經過節點直接彼此鏈接來實現的。每個節點都包含前一個節點的引用、後一個節點的引用和節點存儲的值。當插入一個新的節點時,只須要修改其中保存的先後關係的節點的引用便可,當刪除記錄時也是同樣。遍歷

這樣就帶來如下有缺點:
操做其中對象的速度快 只須要改變鏈接,新的節點能夠在內存中的任何地方
不能隨即訪問 雖然存在get()方法,可是這個方法是經過遍歷接點來定位的因此速度慢。
引用


如下是他們大致的圖形: ArrayList: 【】【】【】【】【】【】【】【】 他就是一個數組的形狀; LinkedList: 【】 _【】 __【】 ___【】 

相關文章
相關標籤/搜索