查漏补缺:别让对象数组的内存图卡住你
这门课解决的核心问题,是很多写了几年增删改查的 Java 开发者依然存在的盲区:知道怎么调 ArrayList 的 add 和 remove,却说不清集合底层的继承体系,画不出对象数组在堆内存里的引用关系。适合那些语法基本过关、能独立写业务代码,但遇到集合扩容、迭代器并发修改报错就发懵的技术学习者。如果你连基本数据类型和引用数据类型都还没分清,建议先补完面向对象基础再来看。资料里开篇几节直接从对象数组的内存图切入,这是刻意安排的,不要跳过。很多人觉得集合难懂,根源在于脑子里没有内存模型,搞不清栈里的变量名和堆里的实体是怎么对应的。建议先看引用数据类型数组和对象数组内存图这两块,把引用指向堆内存的链路在纸上画一遍,再进入集合概述和继承体系,这样后面看 Collection 的成员方法时,你脑子里映射的是内存里的对象引用,而不是干巴巴的 API 文档。
配套练习:手写调用链路再对照源码
看这门课最大的忌讳就是只看不敲。资料里讲了 Collection 的成员方法使用,包括 add 方法返回值是什么这种容易被忽略的细节,你必须自己建个测试类,把每个方法都跑一遍,打印结果对照视频里的结论。具体做法是:看完 Collection 继承体系后,自己写一段代码,用 ArrayList 演示添加、删除、判断包含、遍历,每一步打印集合大小和元素内容。遇到 add 方法返回值这种知识点,别只记 boolean,自己写个判断条件试试返回 true 和 false 的场景。资料里的目录顺序是按认知梯度排的,从数组到集合的区别,再到继承体系,再到具体方法,你练习时也按这个顺序来,不要一上来就去折腾泛型或者多线程安全问题。每个小节看完,合上视频,凭记忆写出这节讲的核心 API 和它的行为特征,写不出来就回去重看,别假装会了。
学完能独立回答的几个问题
检验这门课有没有学透,不看笔记记了多少页,看你能不能脱稿回答这几个问题:数组和集合在内存分配和使用场景上的核心区别是什么?Collection 接口下面有哪些直接子接口,它们各自定义了什么行为契约?ArrayList 的 add 方法为什么返回 boolean,什么情况下会返回 false?Collection 的通用成员方法有哪些,哪些方法会改变集合大小,哪些不会?如果你能不查资料把这几个问题说清楚,并且能手写一段用 Collection 接口类型声明、ArrayList 实例化的代码,完成增删改查和遍历,说明这部分基础已经补到位了。接下来可以继续往 List 接口的特有方法、Set 的去重原理、Map 的键值对存储模型延伸,但那是后话,当前这一关先过扎实。资料配合练习的方式很简单:每个视频章节对应一段自己写的测试代码,代码跑通且你能解释每行输出,这节才算过。不要囤视频,看完一节练一节,缺口补一个少一个。
课程目录
1-1 [Java集合精讲] 引用数据类型数组 (21:40) 1-2 [Java集合精讲] 对象数组的内存图 (07:52) 1-3 [Java集合精讲] 集合概述 (04:22) 1-4 [Java集合精讲] 为什么会有集合 (05:09) 1-5 [Java集合精讲] 数组和集合的区别 (04:46) 1-6 [Java集合精讲] 集合的继承体系 (10:34) 1-7 [Java集合精讲] Collection概述及成员方法的使用 (14:49) 1-8 [Java集合精讲] Collection集合的成员方法使用 (06:32) 1-9 [Java集合精讲] ArrayList的add方法的返回值是什么 (04:34) 1-10 [Java集合精讲] Collection的其他的成员方法1 (09:41) 1-11 [Java集合精讲] Collection成员方法讲解 (09:56) 1-12 [Java集合精讲] 集合的遍历 (20:29) 1-13 [Java集合精讲] 迭代器的源码分析 (11:10) 1-14 [Java集合精讲] 遍历学生对象集合的练习 (17:42) 1-15 [Java集合精讲] 迭代器对象使用的注意事项 (06:19) 1-16 [Java集合精讲] List集合概述 (10:46) 1-17 [Java集合精讲] List集合的添加功能讲解 (07:37) 1-18 [Java集合精讲] List集合的删除和获取功能 (07:47) 1-19 [Java集合精讲] List集合的修改功能 (03:26) 1-20 [Java集合精讲] List集合的练习讲解 (06:23) 1-21 [Java集合精讲] List集合的独有遍历方式 (12:39) 1-22 [Java集合精讲] 使用ListIterator的注意事项 (05:18) 1-23 [Java集合精讲] 并发修改异常出现的原因 (08:00) 1-24 [Java集合精讲] 并发修改异常的两种解决方案 (07:44) 1-25 [Java集合精讲] List集合的练习之遍历学生对象 (04:59) 1-26 [Java集合精讲] List的子类的区别 (08:30) 1-27 [Java集合精讲] 栈的数据结构讲解 (06:50) 1-28 [Java集合精讲] 队列的数据结构 (03:21) 1-29 [Java集合精讲] 数组的数据结构 (16:52) 1-30 [Java集合精讲] 链表概述和分析 (08:52) 1-31 [Java集合精讲] 对链表执行添加元素操作 (09:06) 1-32 [Java集合精讲] 对链表执行查找和删除操作 (06:54) 1-33 [Java集合精讲] List接口的三个实现类的应用场景 (05:46) 1-34 [Java集合精讲] List集合子类的练习 (09:13) 1-35 [Java集合精讲] Vector独有的功能 (14:33) 1-36 [Java集合精讲] LinkedList独有的功能 (17:40) 1-37 [Java集合精讲] 栈的原理讲解 (08:41) 1-38 [Java集合精讲] 栈的创建和测试 (04:59) 1-39 [Java集合精讲] 栈的使用注意事项 (04:59) 1-40 [Java集合精讲] 队列的实现思路 (08:17) 1-41 [Java集合精讲] 练习去除List集合中重复的字符串 (14:00) 1-42 [Java集合精讲] 练习去除List集合中重复的字符串方式二 (10:24) 1-43 [Java集合精讲] 删除集合中重复字符串的注意事项 (15:35) 1-44 [Java集合精讲] 泛型的概念 (02:31) 1-45 [Java集合精讲] 泛型的由来 (11:07) 1-46 [Java集合精讲] 泛型的应用及好处 (11:40) 1-47 [Java集合精讲] 泛型的注意事项 (04:34) 1-48 [Java集合精讲] 泛型集合存储并遍历学生对象 (05:39) 1-49 [Java集合精讲] 泛型集合存储自定义学生对象并去重 (20:08) 1-50 [Java集合精讲] 泛型的应用场景 (03:06) 1-51 [Java集合精讲] 如何定义一个泛型类 (22:56) 1-52 [Java集合精讲] 泛型方法的定义 (09:16) 1-53 [Java集合精讲] 泛型方法的应用场景 (03:59) 1-54 [Java集合精讲] 定义泛型类、泛型方法的注意事项 (03:01) 1-55 [Java集合精讲] 泛型接口的定义 (03:43) 1-56 [Java集合精讲] 泛型接口的两种实现方式 (12:27) 1-57 [Java集合精讲] 泛型通配符的概念和种类 (04:12) 1-58 [Java集合精讲] 泛型通配符出现的原因 (15:55) 1-59 [Java集合精讲] 泛型通配符之向下限定 (07:46) 1-60 [Java集合精讲] 向上限定通配符 (06:39) 1-61 [Java集合精讲] 泛型高级知识 (19:54) 1-62 [Java集合精讲] 增强for循环的使用格式和演示 (09:16) 1-63 [Java集合精讲] 增强for的注意事项及底层原理 (05:41) 1-64 [Java集合精讲] 增强for练习 (04:20) 1-65 [Java集合精讲] 静态导入 (09:30) 1-66 [Java集合精讲] 可变形参的格式和本质 (12:49) 1-67 [Java集合精讲] 可变形参的注意事项 (06:25) 1-68 [Java集合精讲] 用Arrays的asList方法把数组转换成list集合 (09:18) 1-69 [Java集合精讲] 集合练习之嵌套遍历 (20:36) 1-70 [Java集合精讲] 集合练习之生成10个1到20之间的随机数 (12:08) 1-71 [Java集合精讲] 集合练习之求录入数据最大值的思路分析 (03:33) 1-72 [Java集合精讲] 集合练习之求录入数据最大值的代码实现 (12:28) 1-73 [Java集合精讲] Set集合概述 (09:19) 1-74 [Java集合精讲] Set集合和List集合添加null值的区别 (19:01) 1-75 [Java集合精讲] Set集合的去重原理推断 (10:10) 1-76 [Java集合精讲] Set集合的去重原理推断2 (10:58) 1-77 [Java集合精讲] HashSet的数据结构分析 (09:04) 1-78 [Java集合精讲] HashSet去重步骤分析讲解 (25:15) 1-79 [Java集合精讲] hashCodef方法的重写 (17:35) 1-80 [Java集合精讲] HashSet集合的练习 (08:35) 1-81 [Java集合精讲] LinkedHashSet集合概述 (09:58) 1-82 [Java集合精讲] TreeSet概述 (12:21) 1-83 [Java集合精讲] TreeSet集合的数据结构概述 (07:44) 1-84 [Java集合精讲] TreeSet集合的排序原理分析 (16:04) 1-85 [Java集合精讲] 自然排序的依据之comparable接口 (12:15) 1-86 [Java集合精讲] 自然排序的依据之comparable接口2 (16:50) 1-87 [Java集合精讲] 让对象实现Comparable接口的代码演示 (26:52) 1-88 [Java集合精讲] TreeSet集合用比较器对象进行比较排序 (19:54) 1-89 [Java集合精讲] HashSet集合的练习 (09:40) 1-90 [Java集合精讲] TreeSet集合练习的分析过程 (06:30) 1-91 [Java集合精讲] TreeSet集合练习的代码实现 (19:11) 1-92 [Java集合精讲] TreeSet集合的练习的注意事项 (15:14) 1-93 [Java集合精讲] 补充讲解TreeSet集合的比较器的局部内部类实现方式 (03:35) 1-94 [Java集合精讲] Map集合概述 (11:54) 1-95 [Java集合精讲] Map集合的继承体系 (12:32) 1-96 [Java集合精讲] Map集合的添加和修改功能 (14:48) 1-97 [Java集合精讲] Map集合的删除功能 (05:06) 1-98 [Java集合精讲] HashMap中如何判断添加的键和集合中的键一样 (05:25) 1-99 [Java集合精讲] HashMap的判断功能 (05:07) 1-100 [Java集合精讲] HashMap的获取功能 (06:42) 1-101 [Java集合精讲] Map的获取功能2及Map的遍历方式 (17:54) 1-102 [Java集合精讲] Map集合的第二种遍历方式 (05:10) 1-103 [Java集合精讲] HashMap的练习 (13:58) 1-104 [Java集合精讲] HashMap练习2 (07:45) 1-105 [Java集合精讲] HashMap练习3 (16:25) 1-106 [Java集合精讲] LinkedHashMap讲解 (09:29) 1-107 [Java集合精讲] TreeMap集合讲解 (14:04) 1-108 [Java集合精讲] TreeSet集合讲解2 (14:40) 1-109 [Java集合精讲] TreeMap集合3 (11:11) 1-110 [Java集合精讲] 集合的嵌套遍历练习 (15:05) 1-111 [Java集合精讲] 集合的嵌套遍历练习2 (14:14) 1-112 [Java集合精讲] 统计字符串中字符出现次数的思路分析 (10:19) 1-113 [Java集合精讲] 统计字符串中字符出现次数的代码实现 (15:56) 1-114 [Java集合精讲] Hashtable的讲解 (13:01) 1-115 [Java集合精讲] Collections概述及sort方法讲解 (11:16) 1-116 [Java集合精讲] Collections类的sort方法讲解 (08:44) 1-117 [Java集合精讲] Collections类的sort方法排序2 (08:38) 1-118 [Java集合精讲] Collections的二分查找 (06:28) 1-119 [Java集合精讲] Collections的二分查找2 (05:42) 1-120 [Java集合精讲] Collections求最大值 (03:49) 1-121 [Java集合精讲] Collections的反转和置换功能 (03:35) 1-122 [Java集合精讲] 集合总结 (15:38)





