HoRain云--Java集合框架:从入门到精通

  

HoRain云小助手:个人主页

  个人专栏: 《Linux 系列教程》《c语言教程》

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

一、核心接口

1. Collection 接口(单列数据)

2. Map 接口(键值对)

二、常用实现类

1. List 接口的实现类

2. Set 接口的实现类

3. Queue 接口的实现类

4. Map 接口的实现类

三、工具类

四、并发集合(Java 5+)

五、集合框架关系图

六、选择集合类的原则


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 替代) 旧代码兼容

三、工具类

  1. Collections
    • 提供集合操作工具方法:排序(sort)、同步化(synchronizedList)、不可变集合(unmodifiableList)等。
  2. Arrays
    • 提供数组操作工具方法:排序(sort)、转换为集合(asList)等。

四、并发集合(Java 5+)

类名 特点
ConcurrentHashMap 线程安全的 HashMap(分段锁优化,高并发场景推荐)
CopyOnWriteArrayList 写操作时复制新数组,读操作无锁(适合读多写少场景)
BlockingQueue 系列 线程安全的阻塞队列(如 ArrayBlockingQueueLinkedBlockingQueue

五、集合框架关系图

Collection
├── List
│   ├── ArrayList
│   ├── LinkedList
│   └── Vector(已过时)
├── Set
│   ├── HashSet
│   ├── LinkedHashSet
│   └── TreeSet
└── Queue
    ├── LinkedList
    ├── PriorityQueue
    └── BlockingQueue 系列

Map
├── HashMap
├── LinkedHashMap
├── TreeMap
├── Hashtable(已过时)
└── ConcurrentHashMap

六、选择集合类的原则

  1. 是否需要唯一性
    • 唯一性 → Set;允许重复 → List
  2. 是否需要排序
    • 自然排序 → TreeSet/TreeMap;插入顺序 → LinkedHashSet/LinkedHashMap
  3. 是否考虑线程安全
    • 单线程 → ArrayList/HashMap;高并发 → ConcurrentHashMap/CopyOnWriteArrayList
  4. 性能需求
    • 查询多 → ArrayList/HashMap;增删多 → LinkedList

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!

如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!

Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!

你可能感兴趣的:(java,开发语言)