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

Java 集合框架核心接口与类层次结构详解

Java 集合框架是 Java 开发的基础,主要包含 Collection 和 Map 两大体系。Collection 下分 Set、List 等接口,Map 提供键值对映射。常见实现类如 ArrayList、HashMap、HashSet 各有优劣,涉及数据结构如数组、链表、哈希表及平衡树。掌握它们之间的继承关系与特性差异,有助于在实际开发中根据性能、顺序及线程安全需求选择合适的容器类型。

abccba发布于 2025/1/20更新于 2026/10/2496 浏览
Java 集合框架核心接口与类层次结构详解

Collection 和 Collections 的区别

这两个名字很像,但概念完全不同。Collection 是集合类的顶级接口,而 Collections 是一个提供了一系列静态方法的工具类,用来操作或返回集合。

核心接口概览

集合框架主要由 Collection 和 Map 两大体系构成。下面整理了核心接口及其对应的常见实现类:

接口说明实体类
Collection基本接口,定义普通操作,将对象集合当作独立单元处理-
Set扩展 Collection,维护元素集合(通常无序)HashSet, LinkedHashSet
SortedSet扩展 Set,提供按顺序存储的功能TreeSet
List扩展 Collection,存放有序元素序列ArrayList, Vector, LinkedList
Map定义键/值 (key-value) 映射关系维护的操作HashMap, Hashtable, LinkedHashMap
SortedMap扩展 Map,针对以键序排列存放的映射TreeMap

实现类特性对比

实际开发中,选择哪个实现类取决于对重复项、顺序及底层数据结构的需求:

实体集合/映射接口重复项有序/排序元素调用方法实现类数据结构
HashSetSet元素唯一无顺序equals(), hashCode()Hash 表
LinkedHashSetSet元素唯一插入顺序equals(), hashCode()Hash 表和双向链表
TreeSetSortedSet元素唯一排序equals(), compareTo()平衡树
ArrayListList可以重复插入顺序equals()可调大小数组
LinkedListList可以重复插入顺序equals()链表
VectorList可以重复插入顺序equals()可调大小数组
HashMapMap键唯一无顺序
equals(), hashCode()
Hash 表
LinkedHashMapMap键唯一键插入顺序/访问顺序equals(), hashCode()Hash 表和双向链表
HashtableMap键唯一无顺序equals(), hashCode()Hash 表
TreeMapSortedMap键唯一键序排列equals(), compareTo()平衡树

代码实战

直接看段代码,感受一下不同容器在添加相同数据时的表现差异:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Q7 {
    public static void main(String[] args) {
        // List 允许重复元素
        List<String> a1 = new ArrayList<>();
        a1.add("Program");
        a1.add("Creek");
        a1.add("Java");
        a1.add("Java");
        System.out.println("ArrayList Elements");
        System.out.print("\t" + a1 + "\n");

        List<String> l1 = new LinkedList<>();
        l1.add("Program");
        l1.add("Creek");
        l1.add("Java");
        l1.add("Java");
        System.out.println("LinkedList Elements");
        System.out.print("\t" + l1 + "\n");

        // Set 不允许重复元素
        Set<String> s1 = new HashSet<>();
        s1.add("Program");
        s1.add("Creek");
        s1.add("Java");
        s1.add("Java");
        s1.add("tutorial");
        System.out.println("Set Elements");
        System.out.print("\t" + s1 + "\n");

        // Map 键唯一,后添加的同键值会覆盖旧值
        Map<String, String> m1 = new HashMap<>();
        m1.put("Windows", "2000");
        m1.put("Windows", "XP");
        m1.put("Language", "Java");
        m1.put("Website", "demo");
        System.out.println("Map Elements");
        System.out.print("\t" + m1);
    }
}

运行结果大致如下:

  • ArrayList 和 LinkedList 保留了重复的 "Java"。
  • HashSet 自动去重,且顺序不固定。
  • HashMap 中 "Windows" 的键被覆盖了,只保留最后的 "XP"。

总结

理解这些接口的继承关系和实现类的底层特性,能帮你避开很多坑。比如需要线程安全时考虑 Vector 或 ConcurrentHashMap,需要保持插入顺序时选 LinkedHashMap,需要快速查找时首选 HashMap。根据场景选对容器,代码性能自然就上去了。

目录

  1. Collection 和 Collections 的区别
  2. 核心接口概览
  3. 实现类特性对比
  4. 代码实战
  5. 总结

更多推荐文章

查看全部
  • OpenClaw:基于 Node.js 的 AI Agent 操作系统架构解析
  • Python 零基础学习指南
  • Python 反爬虫攻防全栈解析:JS 逆向与企业级风控
  • VS Code 配置 C/C++ 编译与运行指南
  • Rust 异步编程实战:构建高性能网络应用
  • VSCode Copilot 连接 Figma 实现原型代码生成
  • OpenClaw:实现 AI 直接操控电脑的本地部署指南
  • 豆包 Seedream 4.0 多图融合实战测评:主体一致性与生成效率解析
  • 网络安全面试115问:从信息收集到应急响应,按模块整理
  • C++ 面试常见基础问题与特性解析
  • Transformer 算法模型详解:原理、架构与机器翻译实现
  • 基于 Z-Image-Turbo 构建 AI 绘画 API 服务指南
  • Llama-2-7B 昇腾 NPU 性能测评与部署方案
  • AI 印象派艺术工坊与 Stable Diffusion 对比:轻量部署案例评测
  • 县域烟花禁燃监管 GIS 实践:Java 结合高德地图 API 盘点销售点
  • TypeScript+React 全栈生态实战:从架构选型到工程落地
  • 前端流式输出实现详解:从原理到实践
  • 五个实用的 Python 迷你项目实战指南
  • 鸿蒙 Flutter 智能家居应用开发实战指南
  • 跃阶星辰 AI 开源 Step-3.5-Flash 本地部署指南

相关免费在线工具

  • 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