ArrayList和LinkedList的区别

68 阅读1分钟
  • 数据结构实现:

    • ArrayList :基于数组,便于按 index 访问,超过数组需要扩容,扩容成本较高。

    • LinkedList:使用链表实现,无需扩容。

  • 随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是 线性的数据存储方式,所以需要移动指针从前往后依次查找。

  • 增加和删除效率:在非首尾的增删操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。

  • 内存空间占用:LinkedList 比 ArrayList 更占内存,因为 LinkedList 的节点除了存储数 据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。

  • 线程安全:ArrayList 和 LinkedList 都是不同步的,不保证线程安全。

  • 综合来说,需要频繁读取集合中的元素时,更推荐使用 Arrayist,而在增删操作较多时, 更推荐使用 LinkedList。

  • LinkedList 的双向链表是链表的一种,它的每个数据结点中都有 2 个指针,分别指向直接 后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便的访问它的前 驱结点和后继结点。