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+)

五、集合框架关系图

六、选择集合类的原则


img

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 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值