首先,底層數據結構不同
ArrayList底層基於數組實現,連續內存存儲,需要預先申請分配一段連續的內存空間(創建數組對象),適合下標訪問(隨機訪問),需要創建多大的數組不好確定,如果數組長度過大,會造成內存空間浪費的問題,如果數組長度過小,當數組已滿時想要添加新的元素,就需要創建一個新的數組,新的數組長度是舊數組的1.5倍,並把數據從舊數組複製到新數組中,然後才能添加新的元素。創建新的數組、舊數組數據複製到新數組,都是比較重量級的操作。另外,如果不是在尾部插入、刪除數據還會涉及到元素的移動,使用尾插法並指定初始容量可以極大提高性能,甚至超過LinkedList,因為LinkedList需要創建大量的node對象。
LinkedList底層基於雙向鏈表實現,元素可以儲存在分散的內存中,適合做數據插入操作及刪除操作,不適合隨機查詢,需要逐一遍歷。
其次,ArrayList和LinkedList都實現了List接口,但是LinkedList還額外地實現了Deque接口,所以LinkedList還可以當作隊列來用,利用雙向鏈表和隊列的特性,還是可以當作棧來使用。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/218131.html
微信掃一掃
支付寶掃一掃