List
(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set
(注重独一无二的性质): 存储的元素不可重复的。Queue
(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。Map
(用 key 来搜索的专家): 使用键值对(key-value)存储,类似于数学上的函数 y=f(x),"x" 代表 key,"y" 代表 value,key 是无序的、不可重复的,value 是无序的、可重复的,每个键最多映射到一个值。先来看一下 Collection
接口下面的集合。
ArrayList
:Object[]
数组。详细可以查看:ArrayList 源码分析。Vector
:Object[]
数组。LinkedList
:双向链表(JDK1.6 之前为循环链表,JDK1.7 取消了循环)。详细可以查看:LinkedList 源码分析。HashSet
(无序,唯一): 基于 HashMap
实现的,底层采用 HashMap
来保存元素。LinkedHashSet
: LinkedHashSet
是 HashSet
的子类,并且其内部是通过 LinkedHashMap
来实现的。TreeSet
(有序,唯一): 红黑树(自平衡的排序二叉树)。PriorityQueue
: Object[]
数组来实现小顶堆。详细可以查看:PriorityQueue 源码分析。DelayQueue
:PriorityQueue
。详细可以查看:DelayQueue 源码分析。ArrayDeque
: 可扩容动态双向数组。