
🏠个人主页:黎雁 🎬作者简介:C/C++/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、数据结构与算法(JAVA)、游戏、规划、程序人生 ✨ 从来绝巘须孤往,万里同尘即玉京
文章目录
- Java 集合入门:Collection & List 接口超详细讲解 📝
-
- 📝 文章摘要
- 🧠 前置知识回顾
- 一、Collection 单列集合顶层接口 🏛️
-
- 1. 概述
- 2. 常用成员方法(必背表格)
- 3. 代码示例 + 细节讲解(逐行注释)
- 4. 超重要细节 💡
- 二、List 集合:有序、有索引、可重复 📌
-
- 1. List 概述
- 2. List 独有的索引方法(必背)
- 3. 代码示例 + 易错点深度讲解
- 4. List 两个 remove 方法区别 ⚠️
- 📌 全篇核心知识点总结(干货速记)
-
- ✍️ 写在最后

Java 集合入门:Collection & List 接口超详细讲解 📝
单列集合最核心基础,吃透顶层接口,后面学 Set、Map 都轻松!
📝 文章摘要
- 阅读时长:10 分钟
- 适合人群:
- Java 集合零基础初学者 → 重点看:Collection 接口方法、List 特点、代码示例
- 正在学习 ArrayList/LinkedList 的同学 → 重点看:通用方法、索引操作、方法重载坑点
- 准备面试/期末考试的同学 → 重点看:Collection 常用方法、List 三大特征、contains 原理
- 写 CSDN 技术博客做笔记的同学 → 重点看:结构清晰、细节标注、代码注释完整
- 本文内容:全覆盖 Collection 顶层接口常用方法、List 接口特点与索引方法,附带完整 Java 代码、细节讲解、易错点分析,全程通俗易懂,适合快速入门与复习。
🧠 前置知识回顾
在学习集合之前,我们已经掌握:
集合就是来解决数组不够灵活的问题,而 Collection 是所有单列集合的顶层父接口。
一、Collection 单列集合顶层接口 🏛️
1. 概述
- Collection 是 所有单列集合的顶层接口。
- 凡是单列集合(List、Set)都直接或间接继承自它。
- 它是一个 接口,不能直接实例化,只能使用 多态 创建其实现类对象(如 ArrayList)。
2. 常用成员方法(必背表格)
| public boolean add(E e) | 向集合尾部添加元素 e |
| public boolean addAll(Collection<? extends E> c) | 把另一个集合 c 的元素全部添加进来 |
| public void clear() | 清空集合中所有元素 |
| public boolean remove(Object obj) | 删除集合中 第一个 出现的 obj |
| public boolean removeAll(Collection<?> c) | 删除当前集合中所有属于 c 的元素 |
| public boolean retainAll(Collection<?> c) | 只保留当前集合中属于 c 的元素 |
| public boolean contains(Object obj) | 判断集合是否包含某个元素 obj |
| public boolean isEmpty() | 判断集合是否为空 |
| public int size() | 获取集合中元素个数 |
3. 代码示例 + 细节讲解(逐行注释)
import java.util.ArrayList;
import java.util.Collection;
public class CollectionDemo01 {
public static void main(String[] args) {
// Collection 是接口,不能直接 new,使用多态
Collection<String> coll = new ArrayList<>();
// 1. add 添加元素
// List 集合永远返回 true(允许重复)
// Set 集合重复则返回 false(不允许重复)
coll.add("aaa");
coll.add("bbb");
coll.add("ccc");
System.out.println(coll); // [aaa, bbb, ccc]
// 2. clear 清空集合
// coll.clear();
// 3. remove 删除元素
// Collection 只能根据 **对象** 删除,不能按索引删
// 存在返回 true,不存在返回 false
coll.remove("aaa");
System.out.println(coll); // [bbb, ccc]
// 4. contains 判断是否包含
// 底层依赖 equals()
// 存自定义对象必须重写 equals,否则按地址比较
boolean contains1 = coll.contains("bbb"); // true
boolean contains2 = coll.contains("aaa"); // false
System.out.println(contains1);
System.out.println(contains2);
// 5. isEmpty 判断是否为空
boolean empty = coll.isEmpty(); // false
System.out.println(empty);
// 6. size 获取元素个数
int size = coll.size(); // 2
System.out.println(size);
}
}
4. 超重要细节 💡
- 存储自定义对象时,必须重写 equals()
- 否则默认使用 Object 的 equals(),按地址比较,不是按内容比较。
- List:永远 true(可重复)
- Set:重复返回 false,不重复返回 true。
二、List 集合:有序、有索引、可重复 📌
1. List 概述
- List 继承自 Collection,拥有 Collection 所有方法。
- List 三大特点:
- 有序:存储顺序 = 取出顺序
- 有索引:可以通过索引操作元素
- 可重复:允许存储重复元素
2. List 独有的索引方法(必背)
因为 List 有索引,所以多了 4 个高频方法:
| public void add(int index, E element) | 在指定索引 index 处插入元素 |
| public E remove(int index) | 删除指定索引处元素,返回被删除元素 |
| public E set(int index, E element) | 修改指定索引处元素,返回被修改元素 |
| public E get(int index) | 获取指定索引处的元素 |
3. 代码示例 + 易错点深度讲解
import java.util.ArrayList;
import java.util.List;
public class ListDemo01 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
System.out.println(list); // [aaa, bbb, ccc]
// 1. 指定索引添加
list.add(1, "QQQ");
System.out.println(list); // [aaa, QQQ, bbb, ccc]
// 2. remove 根据索引删除元素
// 返回被删除的元素
String removed = list.remove(0);
System.out.println("被删除的元素:" + removed); // aaa
System.out.println(list); // [QQQ, bbb, ccc]
// ==============================================
// ⚠️ 重点坑点:两个 remove 方法的重载问题
List<Integer> list2 = new ArrayList<>();
list2.add(1);
list2.add(2);
list2.add(3);
// list2.remove(1);
// 这里会调用 remove(int index),不是自动装箱!
// 方法重载:优先调用参数类型完全匹配的方法
// 正确删除元素 1 的写法:手动装箱
Integer target = Integer.valueOf(1);
list2.remove(target);
System.out.println(list2); // [2, 3]
// ==============================================
// 3. set 修改指定索引元素
// 返回被覆盖的旧元素
String oldVal = list.set(0, "aaa");
System.out.println("被修改的元素:" + oldVal); // QQQ
System.out.println(list); // [aaa, bbb, ccc]
// 4. get 获取指定索引元素
String s = list.get(2);
System.out.println("索引2的元素:" + s); // ccc
}
}
4. List 两个 remove 方法区别 ⚠️
这是 面试 + 考试高频坑点:
- 按索引删
- 返回被删元素
- 按元素删
- 返回是否删除成功
重点: 调用 list.remove(1) 时,因为 方法重载,会优先走 remove(int index),不会自动装箱!
想删除元素 1,必须手动装箱:
list.remove(Integer.valueOf(1));
📌 全篇核心知识点总结(干货速记)
Collection:
- 单列集合顶层接口
- 不能直接实例化,用多态
- 核心方法:add、remove、contains、clear、isEmpty、size
- contains 依赖 equals,自定义对象必须重写 equals
List:
- 继承 Collection
- 特点:有序、有索引、可重复
- 独有索引方法:add、remove、set、get
- 两个 remove 方法重载是高频坑点
- 删除数字元素必须手动装箱
✍️ 写在最后
Collection 与 List 是 Java 集合体系的基石。
- Collection 定义了所有单列集合的通用行为
- List 定义了有序、可重复、有索引的集合规范
掌握今天的内容,你就可以顺畅学习:
- ArrayList
- LinkedList
- Vector
- 以及后续的 Set、Map 系列
集合是 Java 基础 重中之重,建议多敲代码、多记细节。
觉得本文清晰、细节足、适合初学者,欢迎 点赞 👍 收藏 💾 关注,后续持续更新 Java 集合系列高质量博客!



