Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList

前言

知识点概览:

  • ArrayList 与 LinkedList对比
  • ArrayList 中的 RandomAccess 接口 是什么?
  • LinkedList 中的 Deque 接口 是什么?
  • 老调常谈 之 ArrayList 扩容机制
  • ArrayList 与 Vector 对比

Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList_第1张图片

ArrayList 与 LinkedList对比

  1. 底层数据结构:

    • ArrayList 底层使用的Object数组,默认大小 10

      Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList_第2张图片

    • LinkedList 底层使用的是双向链表数据结构(JDK1.6之前为循环链表,JDK1.7取消了循环。注意双向链表和双向循环链表的区别)。LinkedList 包含了3个重要的成员:sizefirstlastsize是双向链表中节点的个数,firstlast分别指向第一个和最后一个节点的引用。

      Java 容器 - 详细剖析 List 之 ArrayList, Vector, LinkedList_第3张图片

  2. 插入和删除是否受元素位置的影响:

    • 由于底层实现的影响,ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。比如:执行add(E e)方法的时候, ArrayList 会默认在将指定的元素追加

你可能感兴趣的:(Java,集合框架,java)