Collection接口
Collection接口是最基本的集合接口,它不提供直接的实现
List接口
ArrayList
基于数组
允许任何符合规则的元素插入甚至包括null
明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效率。
次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作
size、isEmpty、get、set、iterator 和 listIterator 操作都以固定时间运行
add 操作以分摊的固定时间运行,也就是说,添加 n 个元素需要 O(n) 时间(由于要考虑到扩容,所以这不只是添加元素会带来分摊固定时间开销那样简单)
LinkedList
基于列表
Vector
Vector是同步的
Vector是线程安全的动态数组
操作与ArrayList几乎一样
Stack
继承自Vector
后进先出的堆栈
push入栈
pop出栈
peek获取栈顶元素
empty判断堆栈是否为空
search检测一个元素在堆栈中的位置
Set接口
EnumSet
枚举的专用Set,所有的元素都是枚举类型
HashSet
基于哈希表
HashSet堪称查询速度最快的集合
子内部元素的顺序是由哈希码来决定
不保证set 的迭代顺序,不保证该顺序恒久不变
不是线程同步的
TreeSet
基于TreeMap
使用元素的自然顺序对元素进行排序,或者根据创建Set 时提供的 Comparator 进行排序
不是线程同步的
Map接口
HashMap
基于哈希表
其不是同步的,且允许空值作为键和值
为快速查询而设计的,其内部定义了一个hash表数组(Entry[] table),元素会通过哈希转换函数将元素的哈希地址转换成数组中存放的索引,如果有冲突,则使用散列链表的形式将所有相同哈希地址的元素串起来
TreeMap
基于红黑树
‘键’以自然顺序或自定义比较器来规则排序
不是线程同步的
HashTable
基于哈希表
其不允许空值作为键和值
解决冲突时与HashMap也一样也是采用了散列链表的形式,不过性能比HashMap要低
Properties
EnumMap
Queue
阻塞式队列
ArrayBlockQueue
PriorityBlockingQueue
LinkedBlockingQueue
双端队列
ArrayDeque
LinkedBlockingDeque
LinkedList