别把 Lambda 写成匿名内部类的语法糖

很多写了几年 Java 的人,一用 Lambda 就露怯:要么硬生生把匿名内部类改写成单行箭头函数,要么面对 Stream 的中间操作和终止操作分不清执行时机,写出来的代码跑出来是个空集合或者抛空指针。这门课解决的就是这种“看过语法、没写过实战”的半吊子状态。它不跟你扯历史包袱,直接从函数式接口切入,逼你搞懂 Lambda 的类型推断依据,然后用方法引用和 Stream API 把集合处理的代码量砍掉一半。适合已经能熟练写面向对象代码、日常被集合遍历和嵌套循环折磨的 Java 开发者,如果你连泛型和接口的基础都不熟,建议先去补基础,这门课不会给你讲什么是多态。

先啃方法引用,再死磕 Stream 的两节课

资料包里的内容是连贯的,但别顺着从头看到尾。建议先看 Lambda 详解,确认自己能分清 Supplier、Consumer、Function、Predicate 这几个核心函数式接口的入参和返回值,这是后面所有代码的地基。看完直接跳到方法引用的两节课,这是很多人卡壳的地方:什么时候用类名::方法名,什么时候用对象::方法名,构造方法引用怎么和 Supplier 配合。把这两块吃透,再回头看 Stream API。Stream 的两节课是核心中的核心,第一集讲过滤、映射、排序这些中间操作,第二集虽然短,但讲的是归约和收集,别因为时长短就跳过。最后那一小时的实战视频是检验你到底懂没懂的试金石,看的时候先暂停,自己试着用 Stream 重写里面的集合操作,再对比视频里的写法,看看自己的链式调用是不是写得又臭又长。

学完能干什么:用一次遍历干掉三层嵌套循环

学完这门课,你应该能独立做一件事:拿到一个复杂的集合处理需求,比如“从一组对象里按某属性分组,过滤掉不满足条件的,再按另一属性排序,最后转成 Map”,不再写三层 for 循环加一堆临时变量,而是用一行 Stream 链式调用搞定,并且能说清楚每一步的惰性求值和及早求值发生在哪里。资料配合练习的方式很简单:视频里的实战例子,自己用旧写法写一遍,再用 Stream 写一遍,对比代码量和可读性。遇到方法引用不确定的地方,回头翻第二、三节的类型推断逻辑。别光看视频点头,打开 IDE 把视频里出现的函数式接口自己实现一遍,哪怕只是写个 Demo 打印几行日志,也比干看强。查漏补缺的目的是能上手写,不是能在脑子里跑代码。

课程目录

1 Lambda表达式及函数式接口介绍 (38:07)
2 Lambda表达式详解 (42:35)
3 方法的引用(一) (45:42)
4 方法的引用(二) (43:25)
5 Stream API(一) (57:02)
6 Stream API(二) (10:40)
7 Lambda表达式、方法的引用、Stream API实战 (01:04:18)