Java 集合源码解析系列:
- 拆行解码 Java 集合源码之总览
- 拆行解码 Java 集合源码之 Collection 的三大体系
- 拆行解码 Java 集合源码之迭代器
- 拆行解码 Java 集合源码之 ArrayList
- 拆行解码 Java 集合源码之 LinkedList
- 拆行解码 Java 集合源码之 HashMap
- 拆行解码 Java 集合源码之 Hashtable
- 拆行解码 Java 集合源码之 LinkedHashMap
- 拆行解码 Java 集合源码之 PriorityQueue
- 拆行解码 Java 集合源码之 ArrayDeque
集合总览
Collection
和 Map
是 Java 集合最顶层的接口或者概念,无论是集合包还是并发包,都基于此。
核心特点:
- 用于存放对象的容器;
- 可变长度,自动扩容;
- 不可存储基本类型。
在 Collection 之下,又分为几类:
- Set:是否有序,看具体实现。元素唯一,判断依据:HashCode、Equals
- List:有序集合,元素不唯一。
- Queue:不唯一,先进先出
- Stack:不唯一,先进后出
List、Set 可以操作集合中任意位置的元素; List 可以精确控制插入的位置,可以通过索引值访问元素。
Queue 和 Stack 只能操作指定位置的,比如 Queue 只能操作队头队尾、Stack 只能操作栈顶。
Map 的特性主要是 Key 位置,支持高效搜索。
带 Tree 前缀的,支持元素的有序,比如 TreeSet、TreeMap。
带 Linked 底层都是支持链表,支持数据插入有序性和遍历的高效、稳定。
带 Hash 则底层以哈希表为结果,注 HashSet 底层以 HashMap 为实现。