java的四種引用關係從強到弱:linkedlist和arraylist的區別是什麼

首先,底層數據結構不同

ArrayList底層基於數組實現,連續內存存儲,需要預先申請分配一段連續的內存空間(創建數組對象),適合下標訪問(隨機訪問),需要創建多大的數組不好確定,如果數組長度過大,會造成內存空間浪費的問題,如果數組長度過小,當數組已滿時想要添加新的元素,就需要創建一個新的數組,新的數組長度是舊數組的1.5倍,並把數據從舊數組複製到新數組中,然後才能添加新的元素。創建新的數組、舊數組數據複製到新數組,都是比較重量級的操作。另外,如果不是在尾部插入、刪除數據還會涉及到元素的移動,使用尾插法並指定初始容量可以極大提高性能,甚至超過LinkedList,因為LinkedList需要創建大量的node對象。

LinkedList底層基於雙向鏈表實現,元素可以儲存在分散的內存中,適合做數據插入操作及刪除操作,不適合隨機查詢,需要逐一遍歷。

其次,ArrayList和LinkedList都實現了List接口,但是LinkedList還額外地實現了Deque接口,所以LinkedList還可以當作隊列來用,利用雙向鏈表和隊列的特性,還是可以當作棧來使用。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/218131.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 00:30
下一篇 2024-12-09 00:30

相關推薦

發表回復

登錄後才能評論