备注:单词中文翻译仅供参考,表达、面试、工作还是说英文为主

1. 经典比较结论

2. 单列集合 容器(collection)

2.1 列表(list)

2.1.1 数组列表(ArrayList)

(1)底层原理

  • 底层封装了一个可变长度的数据对象,当数据存储到一个设定的阈值,内存会重新按照逻辑分配一个更大的数组

    (2)重要结论

  • 查询快,增删慢

    • 由于底层是数组,所以增加和删除指定位置的元素,效率会比较慢
    • 数组可以通过索引的方式来访问元素,所以查找快
  • 线程不安全: 因为没有使用同步锁,或者基于CAS的技术

    2.1.2 链表集合(LinkedList)

    (1)底层原理

  • 封装了一个双向循环链表,增删元素的时候只需要改变,前后节点引用

    (2)重要结论

  • 查询快,增删慢

    • 底层是链表,所以增删快
    • 链表不支持索引查询,所以查询慢
  • 线程不安全

    2.1.3 Vector

  • 线程安全:Vector 是通过在其几乎所有方法前加 synchronized 关键字来保证线程安全性

    2.1.4 CopyOnWriteList

  • 线程安全:CopyOnWriteList 则是通过数组复制的方法来保证线程安全的

    2.2 集合(set)

    2.2.1 HashSet

    (1)底层原理

    (2)重要结论

    2.2.2 TreeSet

    (1)底层原理

    (2)重要结论

    3. 双列集合 映射(map)

    3.1 map

    3.2 HashMap

    4. 面试题