一、Lambda 表达式
作用
简化匿名内部类写法,替代单行接口实现,让代码更简洁优雅。
语法
java
运行
(参数列表) -> 方法体特点
- 可省略参数类型、小括号、大括号、return
- 只能用于函数式接口
- 支持访问局部变量(隐式 final)
示例
java
运行
// 传统写法 Runnable r1 = new Runnable() { @Override public void run() { System.out.println("传统线程"); } }; // Lambda写法 Runnable r2 = () -> System.out.println("Lambda线程");二、函数式接口
定义
有且仅有一个抽象方法的接口,可被 Lambda 使用。
核心注解
@FunctionalInterface强制校验是否为函数式接口
JDK8 内置四大核心接口
- Consumer<T> 消费型:有参无返回
- Supplier<T> 供给型:无参有返回
- Function<T,R> 函数型:有参有返回
- Predicate<T> 断言型:有参,返回布尔值
三、Stream 流
作用
对集合、数组做流式计算:遍历、过滤、排序、映射、统计、聚合,替代繁琐循环。
三阶段
- 创建流:集合.stream () / Arrays.stream ()
- 中间操作:filter、map、sorted、limit(延迟执行)
- 终端操作: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 专治空指针。