引言
Java集合框架是一套强大的API,它提供了一系列接口和类,用于存储、检索和管理对象集合
Collection和Map
在Java集合框架中,Collection和Map是两个顶层接口,它们分别代表了不同的数据结构概念和用途。
Collection它代表了一组对象,即单元素集合。Collection接口及其子接口和实现类主要关注于存储和操作单个元素的集合,不考虑元素之间的关联关系。Collection接口的主要子接口包括:
List:代表一个有序且可重复的元素集合,可以通过索引访问元素。
Set:代表一个无序且不可重复的元素集合。集合中的元素顺序取决于具体的实现。
Queue:它通常(但不是一定)以先进先出(FIFO)的方式管理元素。它经常用于在元素被处理之前缓存元素。
Map它代表键值对(key-value pairs)的集合。与Collection不同,Map接口关注于元素之间的映射关系,即每个元素都是一个键值对,键是唯一的,而值则可以是重复的。
集合常见实现类介绍(持续完善中...)
List集合常见实现类
| 实现类 | 特点 | 同步/非同步 |
|---|
| ArrayList | 基于动态数组实现,随机访问快,内存利用率高,但插入和删除可能较慢 | 非同步 |
| LinkedList | 基于双向链表实现,插入和删除快,随机访问较慢 | 非同步 |
| Vector | 线程安全的ArrayList,使用同步方法保证线程安全,性能较低 | 同步 |
| Stack | 继承自Vector,用于实现后进先出(LIFO)的栈结构 | 同步 |
Set集合常见实现类特点
| 实现类 | 特点 | 同步/非同步 |
|---|
| HashSet | 基于HashMap实现,无序,不可重复,添加、删除和包含操作快 | 非同步 |
| LinkedHashSet | 继承自HashSet,维护插入顺序,遍历顺序与插入顺序一致 | 非同步 |
| TreeSet | 基于红黑树实现,有序,不可重复,添加、删除和访问操作较慢 | 非同步 |
Queue集合常见实现类特点
| 实现类 | 特点 | 同步/非同步 | 阻塞/非阻塞 | 有界/无界 |
|---|
| ArrayDeque | 基于动态数组实现,可以作为栈和队列使用,效率较高 | 非同步 | 非阻塞 | 无界 |
| LinkedList | 同时实现List和Queue接口,基于双向链表,适用于队列和双向队列 | 非同步 | 非阻塞 | 无界 |
| PriorityQueue | 基于优先级堆实现,元素按照优先级排序,不保证先进先出 | 非同步 | 非阻塞 | 无界 |
| ArrayBlockingQueue | 基于数组实现,线程安全,适用于阻塞队列 | 同步 | 阻塞 | 有界 |
| LinkedBlockingQueue | 基于链表实现,线程安全,适用于阻塞队列 | 同步 | 阻塞 | 可选有界 |
| PriorityBlockingQueue | 基于优先级堆实现,线程安全,元素按照优先级排序 | 同步 | 阻塞 | 无界 |
| SynchronousQueue | 不存储元素,每个插入操作必须等待一个相应的删除操作 | 同步 | 阻塞 | 无界 |
Map集合常见实现类特点
| 实现类 | 特点 | 同步/非同步 |
|---|
| HashMap | 基于哈希表实现,键唯一,值可重复,快速存取 | 非同步 |
| LinkedHashMap | 继承自HashMap,维护插入顺序,遍历顺序与插入顺序一致 | 非同步 |
| TreeMap | 基于红黑树实现,键有序,适用于排序场景 | 非同步 |
| Hashtable | 线程安全的HashMap,使用同步方法保证线程安全,性能较低 | 同步 |
| ConcurrentHashMap | 线程安全的HashMap,使用分段锁技术,性能较高 | 同步 |