跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava算法

Java 集合框架详解:核心接口与常用实现类

Java 集合框架是开发中处理数据的核心工具。梳理了 Collection、List、Set、Map 三大体系及其关键接口。重点解析了 ArrayList、HashSet、HashMap 等常用实现类的底层特性与使用场景。通过代码示例展示了泛型应用、迭代器遍历及自定义排序方法。掌握这些基础组件能显著提升代码效率与可维护性,避免常见的并发与性能陷阱。

利刃发布于 2025/2/5更新于 2026/10/987 浏览
Java 集合框架详解:核心接口与常用实现类

Java 集合框架详解:核心接口与常用实现类

引言

Java 集合是开发中处理数据的核心工具,提供了灵活且高效的数据存储方案。无论是企业级应用还是个人项目,深入理解集合框架都是必备技能。本文将梳理集合的基本概念、核心接口及常用实现类,并结合代码示例解析实际应用场景。

集合概述

java.util 包下的集合类主要用于存放对象。这里有几个核心概念需要注意:

  1. 泛型约束:集合只能存放对象。存入基本类型(如 int)时会自动装箱为包装类(如 Integer)。
  2. 引用传递:集合中存储的是对象的引用,对象本身位于堆内存。
  3. 灵活性:支持不同类型和数量的数据存储。

从 JDK 5 引入泛型后,集合的类型安全性得到了显著提升。

Java 集合主要分为三大体系:

  • Set:无序、不可重复的集合。
  • List:有序、可重复的集合,支持索引访问。
  • Map:键值对映射结构,Key 唯一,Value 可重复。

Collection 接口

Collection 是集合框架的根接口,定义了添加、删除、判断和遍历等基础操作。

基础操作

import java.util.*;

public class CollectionExample {
    public static void main(String[] args) {
        Collection<String> collection = new ArrayList<>();
        collection.add("A");
        collection.add("B");
        collection.add("C");

        System.out.println("集合中的元素:" + collection);

        // 判断是否包含某个元素
        System.out.println("是否包含 A:" + collection.contains("A"));

        // 删除元素
        collection.remove("B");
        System.out.println("删除后:" + collection);

        // 清空集合
        collection.clear();
        System.out.println("清空后是否为空:" + collection.isEmpty());
    }
}

Iterator 接口

Iterator 提供了统一的遍历方式,隐藏了底层实现的细节。JDK 5 之后,foreach 循环语法糖进一步简化了代码。

迭代器遍历

import java.util.*;

public class IteratorExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));

        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            String element = iterator.next();
            System.out.println("元素:" + element);
        }
    }
}

foreach 遍历

更简洁的写法如下:

for (String element : list) {
    System.out.println("元素:" + element);
}

Set 接口

Set 保证元素不重复,常用于去重场景。

HashSet

基于哈希表实现,性能较高。

  • 无序:不保证元素的排列顺序。
  • 唯一性:依赖 equals() 和 hashCode() 方法判断重复。
  • 非线程安全:多线程环境下需额外同步。
import java.util.*;

public class HashSetExample {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("A");
        set.add("B");
        set.add("C");
        set.add("A"); // 重复元素,不会添加

        System.out.println("集合内容:" + set);
    }
}

TreeSet

基于红黑树实现,支持排序功能。

  • 自然排序:默认按元素自然顺序排列。
  • 定制排序:可通过 Comparator 传入比较器。
import java.util.*;

public class TreeSetExample {
    public static void main(String[] args) {
        TreeSet<Integer> treeSet = new TreeSet<>();
        treeSet.add(3);
        treeSet.add(1);
        treeSet.add(2);

        System.out.println("自然排序:" + treeSet);

        // 降序排序
        TreeSet<Integer> customSet = new TreeSet<>(Comparator.reverseOrder());
        customSet.addAll(treeSet);

        System.out.println("降序排序:" + customSet);
    }
}

List 接口

List 允许重复元素,且通过索引定位,适合需要顺序的场景。

ArrayList

基于动态数组实现,查询快,增删慢(涉及数组复制)。

import java.util.*;

public class ArrayListExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("B"); // 允许重复

        System.out.println("集合内容:" + list);
        System.out.println("第一个元素:" + list.get(0));
    }
}

Vector

线程安全的动态数组,但性能较差,现代开发中较少使用,建议用 CopyOnWriteArrayList 或 Collections.synchronizedList 替代。

import java.util.*;

public class VectorExample {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        vector.add("A");
        vector.add("B");
        vector.add("C");

        System.out.println("Vector 内容:" + vector);
    }
}

Map 接口

Map 以键值对形式存储数据,Key 必须唯一。

HashMap

最常用的 Map 实现,基于哈希表。

import java.util.*;

public class HashMapExample {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("A", "Apple");
        map.put("B", "Banana");
        map.put("C", "Cherry");

        System.out.println("Map 内容:" + map);
    }
}

TreeMap

按键排序,适用于需要有序 Key 的场景。

import java.util.*;

public class TreeMapExample {
    public static void main(String[] args) {
        TreeMap<String, String> treeMap = new TreeMap<>();
        treeMap.put("B", "Banana");
        treeMap.put("A", "Apple");
        treeMap.put("C", "Cherry");

        System.out.println("排序后的 TreeMap:" + treeMap);
    }
}

Collections 工具类

Collections 提供了大量静态方法,用于操作集合对象,如排序、查找、打乱等。

import java.util.*;

public class CollectionsExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>(Arrays.asList(3, 1, 2));

        // 排序
        Collections.sort(list);
        System.out.println("排序后:" + list);

        // 打乱顺序
        Collections.shuffle(list);
        System.out.println("打乱后:" + list);
    }
}

总结

Java 集合框架涵盖了绝大多数数据存储需求。在实际开发中,根据是否需要排序、是否允许重复、是否并发安全来选择具体的实现类,能显著提升代码效率。掌握这些组件的特性与用法,是编写高质量 Java 代码的基础。

目录

  1. Java 集合框架详解:核心接口与常用实现类
  2. 引言
  3. 集合概述
  4. Collection 接口
  5. 基础操作
  6. Iterator 接口
  7. 迭代器遍历
  8. foreach 遍历
  9. Set 接口
  10. HashSet
  11. TreeSet
  12. List 接口
  13. ArrayList
  14. Vector
  15. Map 接口
  16. HashMap
  17. TreeMap
  18. Collections 工具类
  19. 总结

更多推荐文章

查看全部
  • Open-Lovable 网页克隆实战:结合 cpolar 实现远程协作
  • DALL·E 3 图像生成机制与 API 应用指南
  • 医学统计学基础概念与 Python 数据分析实践
  • 单链表核心操作实战:删除节点、反转与查找中间节点
  • Java 常用类详解
  • SketchUp 模型导出 STL 格式的 3D 打印全流程指南
  • Web 聊天室消息加解密方案详解
  • CSP-S 提高组专题:倍增算法思想与应用(四)
  • Rust 语言入门:从环境搭建到发布第一个 CLI 工具
  • Python 核心应用场景与开发环境配置指南
  • 2025 年学生常用 AI 降重工具指南
  • DeepSeek 中冷启动数据与多阶段训练的作用
  • 大模型时代人形机器人感知:视觉 - 语言模型应用
  • Bash 脚本中哈希符号(#)的注释用法详解
  • Qwen3-4B-Instruct AI 写作部署与实战指南
  • Linux 基础开发工具:Git 版本管理与 GDB/CGDB 调试技巧
  • Spring Bean 的作用域
  • Claude Skills 实战:自动化工作流与技能管理
  • 单链表综合练习:删除指定节点、反转链表与查找中间节点
  • FAIR plus 机器人全产业链接会:聚焦具身智能与产业链协同

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online