ArrayList和LinkedList 的區別

我們都知道Java的集合存儲分爲值存儲和 key-value方式的存儲,也就是Conllection和map兩種

值存儲又可以分爲:

  • List
  • Set

而List又有常用的ArrayList和LinkedList ,那麼兩者有什麼區別呢?


ArrayList和LinkedList 的區別

底層:

  • ArrayList的底層使數組
  • LinKedList的底層時鏈表

優點:

  • ArrayList由於底層使用的是數組,所以查詢特定的元素特別快
  • LinKedList由於 底層使用的是鏈表,所以插入和刪除特別快

缺點:

  • 由於數組在內存中是一塊連續的內存,如果插入或者刪除,需要移動內存, 所以ArrayList在插入或刪除會比較慢
  • 鏈表不要求內存是連續的,插入時不需要移動內存,只需改變引用執行即可,所以LinKedList在插入或刪除效率高,比較快

使用場景:

  • ArrayList:使用在查詢比較多,刪除或插入比較少

  •  

    LinkedList:使用在查詢比較少,刪除和插入比較多

總結:

  • ArrayList:由於底層是使用數組實現的,所以查詢特定元素的時候速度比較快,但是在插入和刪除的時候需要移動內存,所以插入和刪除比較慢,建議使用在查詢比較多,刪除和插入少的場景。
  • LinkedList:底層是由鏈表組成的,內存不是連續的,在插入和刪除的時候不需要移動內存,所以效率比較高,但是查詢的時候需要從頭開始一個一個查找,造成查詢比較慢,建議使用在查詢比較少,刪除和插入多的場景。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章