先看下類圖:
相同點:
都實現了List接口和Collection;
不同點:
1、ArrayList是基於數組實現的;LinkedList是基於鏈表實現的;
2、ArrayList隨機查詢速度快;LinkedList插入和刪除速度快;
原理解析:
ArrayList是基於數組實現的,他的特性就是可以使用索引來提升查詢效率;插入和刪除數組中某個元素,會導致其后面的元素需要重新調整索引,產生一定的性能消耗;
LinkedList是基於鏈表實現的,沒有索引,所以查詢效率不高,但是插入和刪除效率卻很高;為什么呢?因為鏈表里插入或刪除某個元素,只需要調整前后元素的引用即可;