ArrayList VS LinkedList

java編程中咱們用最多的幾個類能夠就是String,ArrayList,HashMap了.特別是ArrayList咱們幾乎無人不知,甚至有亂用的嫌疑了咱們來看看ArrayList和LinkedList的區別.故名思意ArrayList是數組表,LinkedList是連接表.ArrayList的全部數據是在同一個地址上,而LinkedList的每一個數據都擁有本身的地址.java

咱們來比較一下經常使用的數據的插入,數據的刪除,數據的更新,數據查詢.編程

數據插入 :好比在i節點插入一個新數據數組

   ArrayList:循環到i節點,插入一個新數據,而後把i節點後面的全部的數據的index加1. ->操做多spa

   LinkedList:循環到i節點,把前一個節點的後續連接到新數據,而後把新數據連接到後一個數據就能夠了.  ->操做少orm

   結論:平均效率LinkedList要好.ci

數據刪除 :好比刪除i節點數據it

   ArrayList:循環到i節點,而後把i節點後面的全部的數據的index減1. ->操做多效率

   LinkedList:循環到i節點,把前一個節點的後續連接到i節點的後一個數據就能夠了.  ->操做少List

   結論:平均效率LinkedList要好.循環

數據查詢 :好比查詢i節點數據

   ArrayList:循環到i節點. ->操做少

   LinkedList:循環到i節點.  ->操做少,但因爲每一個數據的地址不同,查詢好比 ArrayList慢.

   結論:平均效率 ArrayList要好.

數據更新 :好比更新i節點數據

   ArrayList:循環到i節點,把數據更新. ->操做少

   LinkedList:循環到i節點,把前數據更新.  ->操做少,但因爲查詢速度沒有 ArrayList好,全部效率沒有 ArrayList好.

   結論:平均效率ArrayList要好.

這樣咱們就能夠看到各有優勢.

若是查詢操做較多ArrayList的效果更好.若是刪除,插入較多LinkedList的效果較好.具體怎麼用還看具體的需求.

相關文章
相關標籤/搜索