Java中ArrayList和LinkedList的区别
1.相同点
都实现了list接口和collection
2.不同点
①ArrayList底层实现是数组,LinkedList底层实现是链表
②ArrayList的查询速度较快,删除和插入时对ArrayList末尾操作速度和LinkedList区别不大,对其他部位操作效率要低于LinkedList。LinkedList删除和插入效率高于ArrayList
3.底层分析
ArrayList:
由于ArrayList的底层是数组,它得特性是可以通过下标实现快速查询。但是在删除和插入操作时,对于尾部的其他部位,删除和插入后都会影响其他元素整体的前移或后移,相对来说比较消耗性能。对于尾部,无论删除还是插入操作,其余的数据都不会移动,所以说性能消耗不大
LinkedList:
LinkedList的底层实现是链表结构,由相互引用的节点组成,不支持下标,只能对总数进行遍历然后取下标获取数据,在效率上肯定要比ArrayList低。对于删除和插入操作只需要改变链表中对应的两个节点之间的引用关系即可,不需要对所有数据都进行改变,所以对于删除和插入操作的效率要比ArrayList的效率高
小弟不才,有所错误请各位大佬多多指教