1.0-集合的综述

集合体系image-20210320204838288

其中,虚线部分是接口,红框部分是实现类。

 

List集合

ArrayList

  • 底层实现:维护一个可变数组实现,当数组容量满时,进行1.5倍扩容(采用移位计算)。默认容量是10;容量大于列表大小。
  • 优缺点:因为采用的是数组,所以查找速度较快,插入速度较慢

Vector

  • 底层实现:和ArrayList实现一样,但是不同的是,Vector在增删改方法上加上了同步块 synchronized。
  • 优缺点:相对于ArrayList来说,保证了线程安全。正因为如此,导致了性能下降

LinkedList

  • 底层实现: 维护一个双向链表。在查询时,会根据查询的index来判断是从头开始查询,还是从尾开始查询。
  • 优缺点:相对于可变数组来说。插入效率更快,查找效率相对较慢

 

set集合

HashSet

  • 底层实现:采用HashMap实现,将元素作为Map的键,一个空Object作为Map的value。没有太大意义

TreeSet

  • 底层实现:采用HashMap实现,将元素作为Map的键,一个空Object作为Map的value。没有太大意义

集合fail-fast,fail-safe机制(迭代器)

  • modCount:记录修改次数

  • fail-fast:快速失败机制。利用modCount变量来实现。在迭代器生成时,记住当前modCount的值。如果在迭代期间发现modCount发生变化。就抛出ConcurrentModifi C ationException异常。

    • 实现类如:ArrayList,LinkedList
  • Fail-Safe:弱一致迭代器,在迭代过程中,发生变化不会抛出异常。在多线程时,应该优先考虑此种迭代器。

    • 实现类如:CopyOnWriteArrayList,CopyOnWriteArraySet , ConcurrentHashMap