作者平台:
| CSDN:https://blog.csdn.net/qq_41153943(ID:苏格拉没有 底)
| 掘金:https://juejin.cn/user/651387938290686(ID:jiangxia_1024)
| 知乎:https://www.zhihu.com/people/1024-paper-96(ID:苏格拉没有底)
| GitHub:https://github.com/JiangXia-1024?tab=repositories
| 微信公众号:1024笔记
| 本文一共1768字,预计阅读13分钟
前言
在我们日常的编程中,很喜欢使用Lambda表达式,合理地使用过它不仅仅能大大的减少我们的代码量,而且能提高代码效率,让我们的代码飞起来!
一、Lambda的本质与诞生背景
Lambda表达式本质是匿名函数,解决传统匿名内部类的"模板代码"问题:
// 传统匿名内部类 vs Lambda
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("匿名内部类");
}
});
Thread t2 = new Thread(() -> System.out.println("Lambda表达式"));
Lambda表达式的核心优势:
🚀 代码简洁度提升50%+
🔥 延迟执行特性(即用即建)
🧠 强化集合操作能力
二、Lambda语法解剖
标准语法:(parameters) -> { body }
精简规则:
类型推断机制:
// 编译器自动识别类型
Comparator<String> c = (s1, s2) -> s1.compareToIgnoreCase(s2);
三、函数式接口:Lambda的基石
定义:仅包含一个抽象方法的接口(可用@FunctionalInterface注解标记)
Java内置四大核心接口:
实战演示:
// 1. Consumer应用:打印集合元素
List<String> words = Arrays.asList("Java", "Lambda", "Stream");
words.forEach(word -> System.out.println(word.toUpperCase()));
// 2. Predicate过滤:筛选偶数
List<Integer> numbers