Java Lambda 表达式与函数式接口

一、Lambda 表达式

Lambda 是匿名函数的简洁写法,配合函数式接口(只有一个抽象方法的接口,如 Runnable、Comparator)使用。

List<String> list = Arrays.asList("b","a","c");
list.sort((x, y) -> x.compareTo(y));   // 替代匿名内部类
new Thread(() -> System.out.println("hi")).start();

二、方法引用

当 Lambda 只是调用已有方法,可用 :: 简化:

list.forEach(System.out::println);
Function<String, Integer> f = String::length;

三、常见函数式接口

接口 方法
Predicate<T> boolean test(T)
Function<T,R> R apply(T)
Consumer<T> void accept(T)
Supplier<T> T get()

Lambda 让集合操作和回调代码大幅精简,是 Java 8 最重要的语法糖。