集合面试上篇通常覆盖体系结构、接口继承关系,以及 List/Set/Map 最常用实现的差异——这是后续源码题的地图。

核心概念

Collection 单列:List 有序可重复、Set 不重复、Queue 队列。Map 双列键值对,不继承 Collection。经典实现:ArrayList/LinkedListHashSet/TreeSetHashMap/LinkedHashMap/TreeMap。迭代器 Iterator 与 fail-fast:modCount 检测并发修改。

关键机制与实践

选型速记:随机访问、尾部增删 → ArrayList头尾插删、无随机访问 → LinkedList去重无序 → HashSet有序 → TreeSet/LinkedHashSet键值查找 → HashMap插入顺序 → LinkedHashMap排序键 → TreeMap。HashMap 依赖 hashCode/equals;JDK 8 链表+红黑树;负载因子与 2 幂容量。

常见误区与小结

  • HashMapHashtable:后者线程安全但过时,并发用 CHM。
  • 认为 Set 用的是 equals alone(还依赖 hash 桶定位)。
  • LinkedList 当「比 ArrayList 快」的万能列表(中间插入仍 O(n) 找位置)。

上篇打牢接口与复杂度,下篇再攻并发容器与源码细节。