🎬 HoRain云小助手:个人主页
🔥 个人专栏: 《Linux 系列教程》《c语言教程》
⛺️生活的理想,就是为了理想的生活!
⛳️ 推荐
前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。
专栏介绍
专栏名称 | 专栏介绍 |
本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。 | |
本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制! | |
全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。 | |
本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。 | |
本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。 | |
本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等) |
目录
Java 集合框架(Java Collections Framework, JCF)是 Java 中用于存储和操作数据结构的核心工具,其核心接口和类可分为以下层次:
一、核心接口
1. Collection
接口(单列数据)
- 子接口:
List
:有序、可重复的集合(如ArrayList
)。Set
:无序、不可重复的集合(如HashSet
)。Queue
:队列,支持先进先出(FIFO)或优先级操作(如PriorityQueue
)。
2. Map
接口(键值对)
- 存储键值对(Key-Value),Key 不可重复(如
HashMap
)。
二、常用实现类
1. List
接口的实现类
类名 | 特点 | 适用场景 |
---|---|---|
ArrayList | 基于动态数组,查询快(O(1)),增删慢(需扩容或移动元素) | 高频查询、随机访问 |
LinkedList | 基于双向链表,增删快(O(1)),查询慢(O(n)) | 高频增删、队列/栈操作 |
Vector | 线程安全的动态数组(已过时,可用 Collections.synchronizedList 替代) | 旧代码兼容 |
2. Set
接口的实现类
类名 | 特点 | 适用场景 |
---|---|---|
HashSet | 基于 HashMap 实现,无序,允许 null | 快速去重 |
LinkedHashSet | 维护插入顺序的 HashSet | 需要保留插入顺序的去重 |
TreeSet | 基于红黑树实现,自然排序或自定义排序 | 需要有序的去重 |
3. Queue
接口的实现类
类名 | 特点 | 适用场景 |
---|---|---|
LinkedList | 可同时作为队列或双端队列(Deque )使用 | 简单队列操作 |
PriorityQueue | 基于堆实现,按优先级排序 | 任务调度(如按优先级处理) |
ArrayBlockingQueue | 线程安全的固定大小队列(基于数组) | 生产者-消费者模型 |
4. Map
接口的实现类
类名 | 特点 | 适用场景 |
---|---|---|
HashMap | 基于哈希表,无序,允许 null Key/Value | 高频键值查询 |
LinkedHashMap | 维护插入顺序或访问顺序的 HashMap | 需要保留顺序的键值存储 |
TreeMap | 基于红黑树,Key 自然排序或自定义排序 | 需要有序的键值存储 |
Hashtable | 线程安全的哈希表(已过时,可用 ConcurrentHashMap 替代) | 旧代码兼容 |
三、工具类
Collections
- 提供集合操作工具方法:排序(
sort
)、同步化(synchronizedList
)、不可变集合(unmodifiableList
)等。
- 提供集合操作工具方法:排序(
Arrays
- 提供数组操作工具方法:排序(
sort
)、转换为集合(asList
)等。
- 提供数组操作工具方法:排序(
四、并发集合(Java 5+)
类名 | 特点 |
---|---|
ConcurrentHashMap | 线程安全的 HashMap (分段锁优化,高并发场景推荐) |
CopyOnWriteArrayList | 写操作时复制新数组,读操作无锁(适合读多写少场景) |
BlockingQueue 系列 | 线程安全的阻塞队列(如 ArrayBlockingQueue 、LinkedBlockingQueue ) |
五、集合框架关系图
Collection
├── List
│ ├── ArrayList
│ ├── LinkedList
│ └── Vector(已过时)
├── Set
│ ├── HashSet
│ ├── LinkedHashSet
│ └── TreeSet
└── Queue
├── LinkedList
├── PriorityQueue
└── BlockingQueue 系列
Map
├── HashMap
├── LinkedHashMap
├── TreeMap
├── Hashtable(已过时)
└── ConcurrentHashMap
六、选择集合类的原则
- 是否需要唯一性
- 唯一性 →
Set
;允许重复 →List
。
- 唯一性 →
- 是否需要排序
- 自然排序 →
TreeSet
/TreeMap
;插入顺序 →LinkedHashSet
/LinkedHashMap
。
- 自然排序 →
- 是否考虑线程安全
- 单线程 →
ArrayList
/HashMap
;高并发 →ConcurrentHashMap
/CopyOnWriteArrayList
。
- 单线程 →
- 性能需求
- 查询多 →
ArrayList
/HashMap
;增删多 →LinkedList
。
- 查询多 →
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙