Java 学习系列(8):Java 集合框架详解

Java 学习系列(8):Java 集合框架详解

1. Java 集合框架概述

Java 集合框架(Java Collections Framework,简称 JCF)是 Java 提供的一个包含多种集合类和接口的框架,用于处理数据存储和操作。集合框架为数据的存储、查询、删除等提供了统一的标准和实现。

集合框架的核心接口包括:CollectionListSetQueue 等,核心实现类包括:ArrayListHashSetLinkedListPriorityQueue 等。

2. 集合框架的核心接口

2.1 Collection 接口

Collection 接口是 Java 集合框架的根接口,定义了集合的基本操作。所有集合类(如 ListSet)都继承自 Collection 接口。

Collection<String> collection = new ArrayList<>();
collection.add("Java");
collection.add("Python");
collection.add("C++");

2.2 List 接口

List 是一个有序集合,允许元素重复。常见实现类包括:ArrayListLinkedListVector

List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("C++");

2.3 Set 接口

Set 是一个不允许重复元素的集合,常见实现类包括:HashSetLinkedHashSetTreeSet

Set<String> set = new HashSet<>();
set.add("Java");
set.add("Python");
set.add("Java");  // 这行会被忽略

2.4 Queue 接口

Queue 是一个用于存储等待处理元素的集合,常用于排队操作。常见实现类包括:LinkedListPriorityQueue

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 循环、IteratorforEach

使用 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 集合框架提供了多种类型的集合类(如 ListSetQueue)来满足不同的数据存储和操作需求。
  • 每种集合类有其特点和适用场景,例如 ArrayList 适合快速访问,HashSet 适合无序且不重复的元素存储,LinkedList 适合频繁插入删除的操作。
  • 在使用集合时需要根据具体需求选择合适的实现类,了解其性能特点有助于优化代码。

下一期:《Java 学习系列(9):Java 并发编程详解》

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值