一、Lambda 表达式

作用

简化匿名内部类写法,替代单行接口实现,让代码更简洁优雅。

语法

java

运行

(参数列表) -> 方法体

特点

  1. 可省略参数类型、小括号、大括号、return
  2. 只能用于函数式接口
  3. 支持访问局部变量(隐式 final)

示例

java

运行

// 传统写法
Runnable r1 = new Runnable() {
    @Override
    public void run() {
        System.out.println("传统线程");
    }
};

// Lambda写法
Runnable r2 = () -> System.out.println("Lambda线程");

二、函数式接口

定义

有且仅有一个抽象方法的接口,可被 Lambda 使用。

核心注解

@FunctionalInterface 强制校验是否为函数式接口

JDK8 内置四大核心接口

  1. Consumer<T> 消费型:有参无返回
  2. Supplier<T> 供给型:无参有返回
  3. Function<T,R> 函数型:有参有返回
  4. Predicate<T> 断言型:有参,返回布尔值

三、Stream 流

作用

集合、数组流式计算:遍历、过滤、排序、映射、统计、聚合,替代繁琐循环。

三阶段

  1. 创建流:集合.stream () / Arrays.stream ()
  2. 中间操作:filter、map、sorted、limit(延迟执行)
  3. 终端操作:forEach、collect、count、max(触发执行)

常用示例

java

运行

list.stream()
    .filter(x -> x > 10)    // 过滤
    .map(x -> x * 2)        // 映射
    .sorted()               // 排序
    .forEach(System.out::println); // 遍历输出

特点

  • 不修改原集合
  • 中间操作链式调用,惰性求值
  • 支持并行流 parallelStream()

四、Optional 类

作用

解决空指针 NullPointerException,优雅判空,替代大量 if (null != obj)。

常用方法

  • Optional.ofNullable(obj) 构建可空对象
  • isPresent() 判断是否非空
  • orElse() 为空给默认值
  • orElseGet() 为空执行逻辑
  • ifPresent() 非空才执行操作

示例

java

运行

String name = null;
Optional.ofNullable(name)
        .ifPresent(System.out::println);

一句话串联记忆

函数式接口是基础,Lambda 简化写法;Stream 做集合流式处理,Optional 专治空指针。

Logo

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

更多推荐