Java 集合框架

发布于:2025-03-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

一、引言

在 Java 编程中,集合是一种非常重要的数据结构,它可以用来存储和管理一组对象。Java 集合框架提供了一套丰富的接口和类,用于处理不同类型的集合,如列表、集合、映射等。通过使用集合框架,开发者可以更高效地处理数据,提高代码的可维护性和可扩展性。

二、Java 集合框架概述

Java 集合框架主要由两个接口派生而来:CollectionMapCollection 接口是所有集合类的根接口,它定义了集合的基本操作,如添加、删除、遍历等。Map 接口则用于存储键值对,每个键对应一个值。

2.1 集合框架的层次结构

Java 集合框架的主要层次结构如下:

  • Collection 接口
    • List 接口:有序集合,允许重复元素,常见的实现类有 ArrayListLinkedList 等。
    • Set 接口:无序集合,不允许重复元素,常见的实现类有 HashSetTreeSet 等。
    • Queue 接口:队列,遵循先进先出(FIFO)原则,常见的实现类有 LinkedListPriorityQueue 等。
  • Map 接口:存储键值对,键是唯一的,常见的实现类有 HashMapTreeMap 等。

三、List 接口及其实现类

3.1 List 接口概述

List 接口是 Collection 接口的子接口,它表示一个有序的集合,允许存储重复的元素。List 接口提供了根据索引访问元素、插入元素、删除元素等操作。

3.2 ArrayList

ArrayListList 接口的一个动态数组实现,它可以自动调整大小以容纳更多的元素。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

LinkedListList 接口的一个链表实现,它使用双向链表来存储元素。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