-
数据结构实现:
-
ArrayList :基于数组,便于按 index 访问,超过数组需要扩容,扩容成本较高。
-
LinkedList:使用链表实现,无需扩容。
-
-
随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是 线性的数据存储方式,所以需要移动指针从前往后依次查找。
-
增加和删除效率:在非首尾的增删操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。
-
内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数 据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
-
线程安全:ArrayList 和 LinkedList 都是不同步的,不保证线程安全。
-
综合来说,需要频繁读取集合中的元素时,更推荐使用 Arrayist,而在增删操作较多时, 更推荐使用 LinkedList。
-
LinkedList 的双向链表是链表的一种,它的每个数据结点中都有 2 个指针,分别指向直接 后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便的访问它的前 驱结点和后继结点。