ArrayList 与 LinkedList 底层结构
在 Java 中,数组可用来存储相同类型的多个数据,但由于长度不可变,在某些场景下使用比较局限。当我们希望使用类似数组的结构来存储未知个数的元素时,可以使用 ArrayList<E> 和 LinkedList<E>,它们都是 Java Collection Framework 的成员,相比普通的数组,它们提供了更多的操作来方便我们开发。由于底层使用的数据结构不同,它们也经常被拿来做比较。 继承关系 ArrayList 属于 List<E> 接口中的一个 可变长数组 实现,直接 extends AbstractList<E> abstract 类。其继承关系如下: public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable LinkedList 直接 extends AbstractSequentialList<E> abstract 类,间接 extends AbstractList<E>,由于 LinkedList 也实现了 Deque<E> 接口,所以它属于 List<E> 和 Queue<E> 接口的实现。 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable ArrayList 底层结构 对于 ArrayList,Java API 对它的第一句描述为 “Resizable-array implementation of the List interface”。其底层存储元素的结构为 Object 数组。 ...