Java集合框架:核心接口、继承体系、特性区别与代码实战

Java集合框架:核心接口、继承体系、特性区别与代码实战

目录

一、Java集合整体架构总览

二、单列集合 Collection 体系详解

2.1 List 接口:有序、可重复、支持索引

2.2 Set 接口:无序、不可重复

三、双列集合 Map 体系详解

四、三大核心接口终极对比总结

五、开发选型最佳实践

六、面试极简背诵版

七、文末小结


Java 集合框架是日常开发使用频率最高的核心体系,所有数组扩容、数据存储、参数封装、批量数据处理都依赖集合。

很多开发者只会无脑使用 ArrayList、HashMap,却不懂集合整体继承架构、分不清 List/Set/Map 的核心特性、唯一性原理,导致业务代码出现元素重复、有序错乱、key 覆盖等隐形 Bug。

本文基于标准面试原题,完整梳理 Java 集合两大体系、核心接口继承关系、各接口独有特性,搭配全套可运行实战代码,彻底吃透集合底层架构。

一、Java集合整体架构总览

Java 集合框架全部位于java.util包下,整体分为两大核心体系:

1. 单列集合 Collection:单个元素存储,顶层根接口,包含 List、Set 两大子接口

2. 双列集合 Map:键值对(key-value)存储,独立顶层接口,不继承 Collection

二、单列集合 Collection 体系详解

Collection 是所有单列集合的父接口,定义了单列集合通用增删改查方法,如 add()、remove()、clear()、size()、isEmpty() 等。

其下分为两大核心分支:List 有序可重复Set 无序不可重复

2.1 List 接口:有序、可重复、支持索引

核心特性

1. 元素存入顺序与取出顺序一致(有序);

2. 允许元素重复存储;

3. 支持下标索引,可通过get(int index)根据位置精准取值。

常用实现类:ArrayList、LinkedList、Vector

List 代码实战

import java.util.ArrayList; import java.util.List; public class ListDemo { public static void main(String[] args) { List<String> list = new ArrayList<>(); // 添加元素:允许重复 list.add("Java"); list.add("Java"); list.add("MySQL"); // 支持索引取值 System.out.println("下标0元素:" + list.get(0)); // 遍历输出:有序输出 System.out.println("List全部元素:" + list); } }

运行结果:有序输出,且保留重复元素

下标0元素:Java List全部元素:[Java, Java, MySQL]

2.2 Set 接口:无序、不可重复

核心特性

1. 无序:存取顺序不一致;

2. 元素唯一:不允许存储重复元素;

3. 底层通过equals() + hashCode()双重校验保证元素唯一性;

4. 不支持下标索引取值。

常用实现类:HashSet、TreeSet、LinkedHashSet

Set 去重代码实战

import java.util.HashSet; import java.util.Set; public class SetDemo { public static void main(String[] args) { Set<String> set = new HashSet<>(); // 添加重复元素 set.add("Java"); set.add("Java"); set.add("MySQL"); // 无法通过索引取值 System.out.println("Set元素:" + set); } }

运行结果:自动去重,且无序存储

Set元素:[Java, MySQL]

三、双列集合 Map 体系详解

Map 是双列集合顶层接口,不继承 Collection,专门用于存储key-value 键值对数据。

核心特性

1. key 唯一、不可重复,重复 key 会覆盖原有 value;

2. value 可重复、允许为空;

3. JDK8 新增大量便捷方法:forEach、computeIfAbsent、merge 等,极大简化遍历与赋值逻辑。

常用实现类:HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap

Map 核心特性代码实战

import java.util.HashMap; import java.util.Map; public class MapDemo { public static void main(String[] args) { Map<String, Integer> map = new HashMap<&gt(); map.put("Java", 100); // 重复key,覆盖原有value map.put("Java", 99); map.put("MySQL", 88); // JDK8 forEach遍历 map.forEach((k, v) -> System.out.println(k + " : " + v)); // 不存在才赋值,存在不覆盖 map.computeIfAbsent("Redis", k -> 95); System.out.println("新增后:" + map); } }

运行结果:key 重复覆盖,computeIfAbsent 实现不存在新增、存在忽略

Java : 99 MySQL : 88 新增后:{Java=99, MySQL=88, Redis=95}

四、三大核心接口终极对比总结

List:有序、可重复、支持索引查询,适合有序列表数据;

Set:无序、不可重复,依靠 hashCode+equals 去重,适合唯一数据存储;

Map:键值对存储,key唯一、value可重复,适合映射关系数据。

五、开发选型最佳实践

1. 需要有序+可重复+索引取值:优先使用 ArrayList;

2. 需要数据去重:优先使用 HashSet;

3. 需要键值对映射、快速查询:优先使用 HashMap;

4. JDK8+ 业务开发,尽量使用 Map.forEach、computeIfAbsent 简化代码、提升可读性。

六、面试极简背诵版

1. Java集合分两大体系:单列Collection双列Map

2. List:有序可重复、支持索引;Set:无序不可重复,依靠hashCode和equals去重;

3. Map存储键值对,key唯一可覆盖,value可重复,JDK8提供大量增强方法。

七、文末小结

集合框架是 Java 数据存储的基石,弄懂Collection、List、Set、Map的继承关系与核心特性,是解决业务数据存储、去重、有序、映射匹配问题的根本。

熟练区分三者特性,不仅能搞定面试基础题,更能规避开发中集合去重失效、数据覆盖、有序错乱等高频 Bug,写出规范、高效、健壮的业务代码。