一句话核心答案:Lambda 表达式是 Java8 的核心新特性,本质是简化匿名内部类的语法糖,专门用于简化函数式接口的写法,让代码更简洁优雅,核心格式:(参数) -> { 执行代码 } 🚀。

1. 什么是 Lambda 表达式?

Lambda 表达式是函数式编程的体现,专门用来简化匿名内部类代码。它没有类、没有方法名,直接关注参数执行逻辑,大幅减少冗余代码。

核心作用

  • 简化匿名内部类,去掉冗余语法
  • 代码更简洁、可读性更强
  • 配合集合、线程、Stream 流高效开发
  • 是 Java 开发必会的新特性

2. Lambda 使用前提

必须满足:函数式接口

  • 接口中只有一个抽象方法
  • 可以用@FunctionalInterface注解标记

3. 标准语法格式

(参数类型 参数名) -> { 执行代码; return 返回值; }

极简口诀

  • 小括号:参数
  • 箭头:指向执行体
  • 大括号:执行代码

4. 逐步简化(从匿名类 → Lambda)

原始写法:匿名内部类(冗余)

// 开启线程
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("线程执行");
    }
}).start();

Lambda 极简写法

new Thread(() -> System.out.println("线程执行")).start();

关键点

  • 去掉接口名、方法名
  • 只保留核心逻辑
  • 代码量减少 60% 以上

5. 四种常用语法形式

形式 1:无参数、无返回值

() -> System.out.println("执行");

形式 2:单个参数(可省略括号)

s -> System.out.println(s);

形式 3:多个参数、有返回值

(a, b) -> a + b;

形式 4:多行代码(必须加 {} + return)

(a, b) -> {
    int sum = a + b;
    return sum;
};

6. 实战代码(集合遍历 + 排序)

示例 1:集合遍历

public class TestLambda {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("Java", "Lambda", "开发");
        
        // 传统遍历
        for (String s : list) {
            System.out.println(s);
        }

        // Lambda极简遍历
        list.forEach(s -> System.out.println(s));
    }
}

示例 2:集合排序(最常用)

List<Integer> nums = Arrays.asList(5, 2, 8, 1);

// 传统匿名类
Collections.sort(nums, new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o1 - o2;
    }
});

// Lambda一行搞定
Collections.sort(nums, (o1, o2) -> o1 - o2);

关键点

  • 无参数:()
  • 单个参数:可省略()
  • 单行执行体:可省略{}
  • 有返回值且单行:可省略return

7. Lambda 核心特性表

特性 说明
本质 匿名内部类语法糖
前提 函数式接口(1 个抽象方法)
核心符号 ->
简化目标 Runnable、Comparator、自定义接口
配合技术 Stream 流、线程、集合
代码优势 简洁、优雅、高效

8. 常用函数式接口(Java 内置)

  • Runnable:无参无返回
  • Consumer<T>:有参无返回(消费)
  • Supplier<T>:无参有返回(生产)
  • Function<T,R>:有参有返回(转换)
  • Predicate<T>:判断返回 boolean

这些接口全部支持 Lambda

9. 总结

特点 Lambda 表达式
核心语法 (参数) -> 执行体
适用场景 函数式接口实现
最大优势 简化代码、去掉冗余
必备前提 只有一个抽象方法的接口
开发场景 线程、集合、Stream、回调

✅ 什么时候用 Lambda

  • 匿名内部类
  • 使用函数式接口
  • 集合遍历、排序、线程创建
  • Stream 流式编程

❌ 不能使用场景

  • 接口有多个抽象方法
  • 需要访问多个外部变量
  • 代码逻辑非常复杂

🌟最终结论Lambda = 简化函数式接口的语法糖,是 Java8 最实用的特性,核心就是去掉冗余、保留逻辑,学会它能让你的代码瞬间变优雅,是企业开发必备技能 🚀

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐