Java 学习系列(8):Java 集合框架详解
1. Java 集合框架概述
Java 集合框架(Java Collections Framework,简称 JCF)是 Java 提供的一个包含多种集合类和接口的框架,用于处理数据存储和操作。集合框架为数据的存储、查询、删除等提供了统一的标准和实现。
集合框架的核心接口包括:Collection、List、Set、Queue 等,核心实现类包括:ArrayList、HashSet、LinkedList、PriorityQueue 等。
2. 集合框架的核心接口
2.1 Collection 接口
Collection 接口是 Java 集合框架的根接口,定义了集合的基本操作。所有集合类(如 List、Set)都继承自 Collection 接口。
Collection<String> collection = new ArrayList<>();
collection.add("Java");
collection.add("Python");
collection.add("C++");
2.2 List 接口
List 是一个有序集合,允许元素重复。常见实现类包括:ArrayList、LinkedList、Vector。
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
2.3 Set 接口
Set 是一个不允许重复元素的集合,常见实现类包括:HashSet、LinkedHashSet、TreeSet。
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java"); // 这行会被忽略
2.4 Queue 接口
Queue 是一个用于存储等待处理元素的集合,常用于排队操作。常见实现类包括:LinkedList、PriorityQueue。
Queue<String> queue = new LinkedList<>();
queue.add("Java");
queue.add("Python");
queue.add("C++");
3. 常用集合类的详解
3.1 ArrayList
ArrayList 是一个基于动态数组实现的 List,它允许重复元素并且保持元素的插入顺序。
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
System.out.println(list.get(0)); // 输出 "Java"
- 特点:
- 支持快速随机访问。
- 插入和删除元素时性能较差(特别是在中间位置)。
3.2 HashSet
HashSet 是一个基于哈希表实现的 Set,不允许重复元素,且不保证元素的顺序。
Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("C++");
System.out.println(set); // 输出无序的元素
- 特点:
- 不允许重复元素。
- 元素无序,查询速度快。
3.3 LinkedList
LinkedList 是一个基于链表实现的 List,支持快速的插入和删除操作。
List<String> list = new LinkedList<>();
list.add("Java");
list.add("Python");
list.add("C++");
System.out.println(list.get(1)); // 输出 "Python"
- 特点:
- 插入和删除操作效率高。
- 随机访问性能较差。
3.4 PriorityQueue
PriorityQueue 是一个基于优先级堆实现的队列,队列中的元素会根据优先级顺序进行排序。
Queue<Integer> queue = new PriorityQueue<>();
queue.add(10);
queue.add(20);
queue.add(5);
System.out.println(queue.poll()); // 输出 5,最小的元素
- 特点:
- 元素按照自然顺序或自定义比较器排序。
- 用于实现优先队列。
4. 集合类的常用操作
4.1 遍历集合
集合类提供了多种遍历元素的方式,常见的有 for 循环、Iterator 和 forEach。
使用 for 循环
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");
for (String language : list) {
System.out.println(language);
}
使用 Iterator
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
使用 forEach(Java 8+)
list.forEach(language -> System.out.println(language));
4.2 判断集合是否为空
List<String> list = new ArrayList<>();
System.out.println(list.isEmpty()); // 输出 true
list.add("Java");
System.out.println(list.isEmpty()); // 输出 false
4.3 删除元素
list.remove("Python"); // 删除元素
list.remove(0); // 删除索引为0的元素
5. 集合的性能比较
| 集合类型 | 访问元素 | 插入/删除元素 | 线程安全 | 特点 |
|---|---|---|---|---|
ArrayList | 快速 | 较慢(中间插入) | 否 | 动态数组实现 |
LinkedList | 较慢 | 快速(头尾插入) | 否 | 双向链表实现 |
HashSet | 快速 | 快速 | 否 | 哈希表实现 |
TreeSet | 较慢 | 快速 | 否 | 红黑树实现 |
PriorityQueue | 快速 | 快速 | 否 | 优先级队列 |
6. 总结
- Java 集合框架提供了多种类型的集合类(如
List、Set、Queue)来满足不同的数据存储和操作需求。 - 每种集合类有其特点和适用场景,例如
ArrayList适合快速访问,HashSet适合无序且不重复的元素存储,LinkedList适合频繁插入删除的操作。 - 在使用集合时需要根据具体需求选择合适的实现类,了解其性能特点有助于优化代码。
下一期:《Java 学习系列(9):Java 并发编程详解》
1570

被折叠的 条评论
为什么被折叠?



