我們都知道Java的集合存儲分爲值存儲和 key-value方式的存儲,也就是Conllection和map兩種
值存儲又可以分爲:
- List
- Set
而List又有常用的ArrayList和LinkedList ,那麼兩者有什麼區別呢?
ArrayList和LinkedList 的區別
底層:
- ArrayList的底層使數組
- LinKedList的底層時鏈表
優點:
- ArrayList由於底層使用的是數組,所以查詢特定的元素特別快
- LinKedList由於 底層使用的是鏈表,所以插入和刪除特別快
缺點:
- 由於數組在內存中是一塊連續的內存,如果插入或者刪除,需要移動內存, 所以ArrayList在插入或刪除會比較慢
- 鏈表不要求內存是連續的,插入時不需要移動內存,只需改變引用執行即可,所以LinKedList在插入或刪除效率高,比較快
使用場景:
-
ArrayList:使用在查詢比較多,刪除或插入比較少
-
總結:
- ArrayList:由於底層是使用數組實現的,所以查詢特定元素的時候速度比較快,但是在插入和刪除的時候需要移動內存,所以插入和刪除比較慢,建議使用在查詢比較多,刪除和插入少的場景。
- LinkedList:底層是由鏈表組成的,內存不是連續的,在插入和刪除的時候不需要移動內存,所以效率比較高,但是查詢的時候需要從頭開始一個一個查找,造成查詢比較慢,建議使用在查詢比較少,刪除和插入多的場景。