欢迎来到Java集合框架系列的第一篇文章!🌹
本系列文章将以通俗易懂的语言,结合实际开发经验,带您深入理解Java集合框架的设计智慧。🌹
若文章中有任何不准确或需要改进的地方,欢迎大家指出,让我们一起在交流中进步!🌹
文章中的所有示例代码都经过实际验证,您可以直接在项目中参考使用。如果觉得有帮助,欢迎点赞转发!🌹

目录
阅读提示:
- 如果你是初学者,建议按顺序阅读
- 如果你是有经验的开发者,可以直接跳转到感兴趣的章节
- 每个主题都配有代码示例和实践建议
Java集合框架基础精讲
在上一篇《Java集合框架学习指南》中,我们绘制了一张完整的知识地图。今天,让我们迈出探索的第一步,深入理解Java集合框架的设计精髓。
一、基础概念
1. 集合框架层次结构
Java集合框架主要分为两大体系:
- Collection:存储元素的集合,就像一个容器,可以存放多个元素
- Map:存储键值对的映射,就像一个字典,可以通过键快速找到值
Collection 体系
Collection
├── List(有序、可重复)
│ ├── ArrayList
│ ├── LinkedList
│ └── Vector
├── Set(无序、不重复)
│ ├── HashSet
│ ├── TreeSet
│ └── LinkedHashSet
└── Queue(队列)
├── PriorityQueue
└── Deque
List家族
List代表有序、可重复的集合,就像我们排队一样,每个人都有明确的位置。
- ArrayList
// 创建和添加元素
List<String> fruits = new ArrayList<>();
fruits.add("苹果");
fruits.add("香蕉");
fruits.add("橙子");
// 按索引访问
System.out.println(fruits.get(0)); // 输出:苹果
// 插入和删除
fruits.add(1, "葡萄"); // 在索引1处插入
fruits.remove("香蕉"); // 删除指定元素
- 特点:查询快,增删慢
- 场景:适合频繁查询,较少增删的场景
- 应用:展示列表、数据缓存等
- LinkedList
// 创建和操作LinkedList
LinkedList<String> tasks = new LinkedList<>();
tasks.addFirst("任务1"); // 添加到开头
tasks.addLast("任务2"); // 添加到结尾
tasks.removeFirst(); // 移除第一个
tasks.removeLast(); // 移除最后一个
- 特点:增删快,查询慢
- 场景:适合频繁增删,较少查询的场景
- 应用:任务队列、消息队列等
Set家族
Set代表无序、不重复的集合,就像一个集市,东西只能有一份。
- HashSet
// 创建和使用HashSet
Set<String> tags = new HashSet<>();
tags.add("Java");
tags.add("Python");
tags.add("Java"); // 重复元素不会被添加
System.out.println(tags); // 输出:[Java, Python]
// 判断元素是否存在
boolean hasJava = tags.contains("Java"); // 返回true
- 特点:查询快,无序
- 场景:需要去重的场景
- 应用:标签系统、去重统计等
- TreeSet
// 创建和使用TreeSet
TreeSet<Integer> scores = new TreeSet<>();
scores.add(85);
scores.add(92);
scores.add(78);
System.out.println(scores); // 自动排序:[78, 85, 92]
// 范围查询
System.out.println(scores.ceiling(80)); // 大于等于80的最小值
System.out.println(scores.floor(90)); // 小于等于90的最大值
- 特点:有序(自然顺序或自定义顺序)
- 场景:需要排序的去重场景
- 应用:排行榜、成绩统计等
Queue家族
Queue代表队列,就像排队买票,先来先服务。
- PriorityQueue
// 创建优先队列
PriorityQueue<String> taskQueue = new PriorityQueue<>((a, b) ->
b.length() - a.length()); // 按字符串长度降序排列
taskQueue.offer("短任务");
taskQueue.offer("非常长的任务");
taskQueue.offer("中等任务");
// 获取任务
System.out.println(taskQueue.poll()); // 输出:非常长的任务
- 特点:自动排序的队列
- 场景:需要按优先级处理的场景
- 应用:任务调度、事件处理等
- ArrayDeque
// 作为栈使用
ArrayDeque<String> stack = new ArrayDeque<>();
stack.push("第一层");
stack.push("第二层");
System.out.println(stack.pop()); // 输出:第二层
// 作为队列使用
ArrayDeque<String> queue = new ArrayDeque<>()

最低0.47元/天 解锁文章





