集合框架UML图
从图中可以看出集合框架分为2大模块 Collection和Map。
Collection
Collection主要子类接口分为List、Set、Quene。
List的特点是 集合中的元素可重复,因实现ListIterator接口所以提供双向迭代的功能。
以下是相关List的具体实现类
类名 | 使用对象 | 是否实现同步 | 默认大小 | 默认扩容大小 |
---|---|---|---|---|
Vector | 数组(Object[]) | 是 | 10 | 100% |
ArrayList | 数组(Object[]) | 否 | 10 | 50% |
LinkedList | 链表(内部静态类Node) | 否 | 0 | 无 |
Stack在Vector类的基础上增加了栈的先进后出的规则。
Set的特点是 集合中的元素不可重复
HashMap的数组长度总是2的多少次方
类名 | 使用对象 | 是否实现同步 | 默认大小 | 默认扩容大小 | 特点 |
---|---|---|---|---|---|
HashSet | 数组加链表 | 否 | 16 | 100% | 元素插入无序,查询快 |
TreeSet | 树状结构 | 否 | 0 | 无 | 元素有序插入,也能按照给定规则进行比较插入 |
LinkedHashSet在HashSet的基础上在每次增加元素,删除元素时,用一条链表维护元素插入时的先后顺序。
Map
Map是以key-value形式存储的集合
类名 | 使用对象 | 是否实现同步 | 默认大小 | 默认加载因子 | 默认扩容大小 | 特点 |
---|---|---|---|---|---|---|
HashMap | 数组加链表 | 否 | 16 | 0.75f | 100% | 元素无序插入,访问快 |
HashTable | 数组加链表 | 是 | 11 | 0.75f | 100%+1 | 使用Enumeration进行迭代 |
TreeMap | 树状结构 | 否 | 16 | 0.75f | 100% | 有序插入 |
IdentityHashMap | 数组 | 否 | 32 | 无 | 100% | 只要Key!=Key(即地址不等即可) |
WeakHashMap | 数组加链表 | 否 | 16 | 0.75f | 100% | 弱引用Key(即使在内存充足时,只要这个Key不存在强引用,就会被GC给回收掉。) |
QueueQueue
定义了队列的性质---先进先出
ArrayDeque---双向队列
PriorityQueue---优先级队列
以上2种队列均采用的是数组实现的。