1. 引言
1.1 Java集合框架概述
Java集合框架(Java Collections Framework, JCF)是Java中用于存储和操作一组对象的类和接口的统称。它提供了多种数据结构来满足不同的需求,如列表、集合、映射等。JCF的核心接口包括Collection
、List
、Set
、Queue
和Map
,以及它们的各种实现类。
1.2 集合框架的重要性
集合框架简化了编程任务,提供了高效的算法和灵活的数据结构。通过使用集合框架,开发者可以专注于业务逻辑,而无需从头实现复杂的数据结构和算法。
2. Java集合框架结构
2.1 集合接口层次结构
Java集合框架的接口层次结构如下:
Collection
:根接口,定义了基本的操作方法。List
、Set
、Queue
:继承自Collection
,分别表示有序列表、无序集合和队列。Map
:独立于Collection
,用于存储键值对。
2.2 常见集合接口介绍
Collection
:提供了一组元素的基本操作方法,如添加、删除、遍历等。List
:有序集合,允许重复元素。Set
:不允许重复元素的无序集合。Queue
:先进先出(FIFO)的数据结构。Map
:存储键值对,键唯一。
3. List接口及其实现类
3.1 ArrayList特性与使用场景
ArrayList
是基于数组实现的动态列表,支持快速随机访问但插入和删除效率较低。
示例代码:
java">import java.util.ArrayList;public class ArrayListExample {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("Apple");list.add("Banana");list.add("Orange");System.out.println("Initial list: " + list);// 添加元素list.add(1, "Grapes");System.out.println("After adding Grapes: " + list);// 删除元素list.remove("Banana");System.out.println("After removing Banana: " + list);}
}
3.2 LinkedList特性与使用场景
LinkedList
是基于双向链表实现的列表,适合频繁插入和删除操作。
示例代码:
java">import java.util.LinkedList;public class LinkedListExample {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("Apple");list.add("Banana");list.add("Orange");System.out.println("Initial list: " + list);// 添加元素list.addFirst("Grapes");System.out.println("After adding Grapes at first: " + list);// 删除元素list.removeLast();System.out.println("After removing last element: " + list);}
}
3.3 Vector特性与使用场景
Vector
类似于ArrayList
,但它是线程安全的,性能较低。
示例代码:
java">import java.util.Vector;public class VectorExample {public static void main(String[] args) {Vector<String> vector = new Vector<>();vector.add("Apple");vector.add("Banana");vector.add("Orange");System.out.println("Initial vector: " + vector);// 添加元素vector.addElement("Grapes");System.out.println("After adding Grapes: " + vector);// 删除元素vector.removeElement("Banana");System.out.println("After removing Banana: " + vector);}
}
3.4 Stack特性与使用场景
Stack
是基于Vector
实现的后进先出(LIFO)栈。
示例代码:
java">import java.util.Stack;public class StackExample {public static void main(String[] args) {Stack<String> stack = new Stack<>();stack.push("Apple");stack.push("Banana");stack.push("Orange"