ArrayList和LinkedList的区别

一、本质

ArrayList的特点

ArrayList和LinkedList的区别
参考ArrayList源码,ArrayList本质上是一个Object类型的数组

ArrayList的遍历和添加操作效率很高,只有中间插入或删除元素时效率很低
ArrayList和LinkedList的区别
内部数组默认初始容量是10。如果不够会以1.5倍容量增长
假如有12个元素需要添加,先放满10个元素,空间不够了,再创建一个元素组1.5倍大小新数组,把原数组的所有元素放进去,再向后追加新元素。以此类推(第三个数组的大小就是22了)…

LinkedList的特点

ArrayList和LinkedList的区别
参考LinkedList源码,LinkedList本质上是一个双向链表

LinkedList在中间插入和删除元素时具有比ArrayList更好的性能ArrayList和LinkedList的区别
LinkedList的每一个节点都由两个部分data(用于装数据)和pointer(用于装指针)组成,指针指向下一个节点的位置
ArrayList和LinkedList的区别
当需要在中间插入或删除元素的时候,只需要改变相邻两个元素的指针就行了

二、总结

1.ArrayList底层是数组,LinkedList底层是链表
2.ArrayList查询效率高,LinkedList增删效率高(在实际的开发业务中,使用ArrayList远远多于LinkedList)
注意:向后追加再有空间时,ArrayList优于LinkedList