文章插圖

文章插圖
【25.ArrayList 和 LinkedList 的區別是什么? linklist與arraylist的區別】首先,底層數據結構不同
ArrayList底層基于數組實現,連續內存存儲,需要預先申請分配一段連續的內存空間(創建數組對象),適合下標訪問(隨機訪問),需要創建多大的數組不好確定,如果數組長度過大,會造成內存空間浪費的問題,如果數組長度過小,當數組已滿時想要添加新的元素,就需要創建一個新的數組,新的數組長度是舊數組的1.5倍,并把數據從舊數組復制到新數組中,然后才能添加新的元素 。創建新的數組、舊數組數據復制到新數組,都是比較重量級的操作 。另外,如果不是在尾部插入、刪除數據還會涉及到元素的移動,使用尾插法并指定初始容量可以極大提高性能,甚至超過LinkedList,因為LinkedList需要創建大量的node對象 。
LinkedList底層基于雙向鏈表實現,元素可以儲存在分散的內存中,適合做數據插入操作及刪除操作,不適合隨機查詢,需要逐一遍歷 。
其次,ArrayList和LinkedList都實現了List接口,但是LinkedList還額外地實現了Deque接口,所以LinkedList還可以當作隊列來用,利用雙向鏈表和隊列的特性,還是可以當作棧來使用 。
- 榮耀系列和榮耀v系列有什么區別 榮耀v系列和榮耀系列區別哪個好
- 貓咪不拉屎是貓瘟嗎
- 陳道明和左小青同居過嗎 兩人緋聞怎么傳出來的
- 孫羽幽為什么紅不起來 曾能和徐良匹敵
- 日常養生的小動作 關于運動和起居的注意點
- 陌陌和微博
- 三星和蘋果手機哪個更好用 你覺得蘋果好用還是三星好用
- 胡桃殼的鞋子和手套 胡桃殼的鞋子和手套 反思
- 餓了嗎會員紅包和品質聯盟紅包 餓了么品質聯盟紅包是商家出錢嗎
- 豆腐和生菜能一起吃嗎
