Java中集合种类多,功能以及特性各异,为了便于记忆和使用,花了一些时间制作了一种Java常见集合一览表。
Java常见集合一览表 | |||||
集合 | 接口/类 | K/E | V | 是否线程安全 | 说明 |
Collection | 接口 | N/A | N/A | N/A | 定义了集合的基本方法,如size、isEmpty等 |
Vector | 类 | 可为null | N/A | 是 | 线性表的数组实现 |
Stack | 类 | 可为null | N/A | 是 | 栈,Last in first out,继承自Vector |
Queue | 接口 | N/A | N/A | N/A | 队列,First in first out |
Deque | 接口 | N/A | N/A | N/A | 双向队列,Deque继承自Queue,并增加了首尾两端的进出队列操作 |
ArrayList | 类 | 可为null | N/A | 否 | 与Vector的区别是其线程不安全 |
LinkedList | 类 | 可为null | N/A | 否 | 线性表的链式实现,此外它还实现了Deque,即也实现了Queue |
Map | 接口 | N/A | N/A | N/A | 一组元素结构为K、V型的集 |
HashMap | 类 | 可为null | 可为null | 否 | Map的哈希表加链表实现,通过哈希函数能够快速地找到元素,无冲突的情况下仅需访问一次 |
Set | 接口 | N/A | N/A | N/A | 一组元素值唯一的集 |
HashSet | 类 | 可为null | N/A | 否 | 内部使用HashMap实现,K对应E,V保存了一个Object (PRESENT) |
HashTable | 类 | 不可为null | 不可为null | 是 | HashTable与HashMap的区别是其线程安全,同时它不允许K、V为null |
TreeMap | 类 | 不可为null | 可为null | 否 | Map的二叉平衡树实现,根据K的hashcode排序 |
TreeSet | 类 | 不可为null | N/A | 否 | 内部由TreeMap实现,K对应E,V保存了一个Object(PRESENT) |
ConcurrentHashMap | 类 | 不可为null | 不可为null | 是 | 线程安全的HashMap,HashTable的替代者 |