Java集合框架全面解析

112 阅读3分钟

引言

Java集合框架是一套强大的API,它提供了一系列接口和类,用于存储、检索和管理对象集合

Collection和Map

在Java集合框架中,CollectionMap是两个顶层接口,它们分别代表了不同的数据结构概念和用途。

  • 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,使用分段锁技术,性能较高同步