Java 集合框架
一、引言
在 Java 编程中,集合是一种非常重要的数据结构,它可以用来存储和管理一组对象。Java 集合框架提供了一套丰富的接口和类,用于处理不同类型的集合,如列表、集合、映射等。通过使用集合框架,开发者可以更高效地处理数据,提高代码的可维护性和可扩展性。
二、Java 集合框架概述
Java 集合框架主要由两个接口派生而来:Collection
和 Map
。Collection
接口是所有集合类的根接口,它定义了集合的基本操作,如添加、删除、遍历等。Map
接口则用于存储键值对,每个键对应一个值。
2.1 集合框架的层次结构
Java 集合框架的主要层次结构如下:
Collection
接口List
接口:有序集合,允许重复元素,常见的实现类有ArrayList
、LinkedList
等。Set
接口:无序集合,不允许重复元素,常见的实现类有HashSet
、TreeSet
等。Queue
接口:队列,遵循先进先出(FIFO)原则,常见的实现类有LinkedList
、PriorityQueue
等。
Map
接口:存储键值对,键是唯一的,常见的实现类有HashMap
、TreeMap
等。
三、List
接口及其实现类
3.1 List
接口概述
List
接口是 Collection
接口的子接口,它表示一个有序的集合,允许存储重复的元素。List
接口提供了根据索引访问元素、插入元素、删除元素等操作。
3.2 ArrayList
类
ArrayList
是 List
接口的一个动态数组实现,它可以自动调整大小以容纳更多的元素。ArrayList
支持随机访问,即可以通过索引快速访问元素,但在插入和删除元素时效率较低。
3.2.1 ArrayList
的基本操作
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
// 创建一个 ArrayList 对象
List<String> list = new ArrayList<>();
// 添加元素
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 访问元素
System.out.println("第一个元素是:" + list.get(0));
// 修改元素
list.set(1, "Grape");
// 删除元素
list.remove(2);
// 遍历元素
for (String fruit : list) {
System.out.println(fruit);
}
}
}
3.2.2 ArrayList
的优缺点
- 优点:支持随机访问,访问元素的时间复杂度为 O(1);可以自动调整大小。
- 缺点:插入和删除元素的效率较低,时间复杂度为 O(n)。
3.3 LinkedList
类
LinkedList
是 List
接口的一个链表实现,它使用双向链表来存储元素。LinkedList
在插入和删除元素时效率较高,但随机访问元素的效率较低。
3.3.1 LinkedList
的基本操作
import java.util.LinkedList;
import java.util.List;
public class LinkedListExample {
public static void main(String[] args) {
// 创建一个 LinkedList 对象
List<String> list = new LinkedList<>();
// 添加元素
list.add("Apple");
list.add("Banana");
list.add("Cherry");
// 在指定位置插入元素
list.add(1, "Grape");
// 删除元素
list.remove("Banana");
// 遍历元素
for (String fruit : list) {
System