Java面试题之ArrayList和LinkedList的区别

先看下类图:

相同点:

  都实现了List接口和Collection;

不同点:

  1、ArrayList是基于数组实现的;LinkedList是基于链表实现的;

  2、ArrayList随机查询速度快;LinkedList插入和删除速度快;

原理解析:

  ArrayList是基于数组实现的,他的特性就是可以使用索引来提升查询效率;插入和删除数组中某个元素,会导致其后面的元素需要重新调整索引,产生一定的性能消耗;

  LinkedList是基于链表实现的,没有索引,所以查询效率不高,但是插入和删除效率却很高;为什么呢?因为链表里插入或删除某个元素,只需要调整前后元素的引用即可;

原文地址:https://www.cnblogs.com/hujinshui/p/10421497.html