Lambda 表达式
本质:作为函数式接口的实例
格式
->:lambda 操作符()
->右边:lambda 形参列表(抽象方法的形参列表)
->左边:lambda 体(抽象方法的方法体)
使用格式
lambda 表达式六种使用情况:
- 形参类型可以省略,如果参数只有一个,可省小括号
- 方法体只有一条语句,可省略大括号(语句为 return 语句时,可省略 return 和大括号关键字)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Runnable runnable = () -> System.out.println("123");
Consumer<String> s1 = (String s) -> { System.out.println(s); }; s1.accept("123");
Consumer<String> s2 = (s) -> { System.out.println(s); }; s2.accept("23");
Consumer<String> s3 = s -> { System.out.println(s); }; s3.accept("34");
Comparator<Integer> comparator = (o1, o2) -> { System.out.println(o1); System.out.println(o2); return o1.compareTo(o2); }; comparator.compare(12, 23);
Comparator<Integer> comparator2 = (o1, o2) -> o1.compareTo(o2); comparator2.compare(12, 11);
|
函数式接口
常见函数式接口


方法引用和构造器引用
方法引用的三种情况

引用要求:
抽象方法和方法体内部的调用方法
- 返回值相同
- 形参列表相同




Stream API
用于操作数据源(集合、数组)
特点
- 不存储元素
- 不该元数据
- 操作延迟执行
Stream 操作三步
- 创建 Stream
- 中间操作
- 终止操作
