Lambda表达式(一)
1. Lambda表达式基础语法
lambda是一个匿名函数
参数列表 方法体
():描述参数列表
{ } :描述方法体
-> :lambda运算符 读作goes to
2. 语法精简
1)参数
由于在接口的抽象方法中,已经定义了参数的数量和类型,所以在lambda表达式中,参数类型可以省略。
备注:如果要省略参数的类型,则每一个参数的类型都要省略
2)参数小括号
如果参数列表中,参数的数量只有一个,则小括号可以省略。
3)方法大括号
如果方法体中只有一条语句,则方法大括号可以省略。
4)如果方法体中唯一一条语句是返回语句,则在省略大括号的同时也要省略return。
3. 方法引用
可以快速的将一个lambda表达式的实现指向一个已经实现的方法
语法:方法的隶属者::方法名 例:System.out::println
注意:
1)参数的数量和类型一定要和接口中定义的方法一致;
2)返回值的类型一定要和接口中定义的方法一致。
4. 构造方法的引用
类::new
例:Person::new
5. 集合的遍历
list.forEach(System.out::println);
list.forEach(ele -> {
if(ele % 2 == 0) {
System.out.println(ele);
}
});
6. 删除集合中年龄大于10的元素
removeIf: 将集合中每个元素都代入到test方法中,如果返回值true,则删除这个元素
list.removeIf(ele -> age > 10);
7. 开辟一条线程,作一个数字的输出
lambda表达式:
Thread thread = new Thread(() -> {
for(int i = 0; i < 100; i++) {
System.out.println(i);
}
});
8. 系统内置的一些函数式接口
Predicate<T> : 参数T 返回值boolean
IntPredicate : int -> boolean
LontPredicate : long -> boolean
DoublePredicate : double -> boolean
Consumer<T> : 参数T 返回值void
IntConsumer : int -> void
LontConsumer : long -> void
DoubleConsumer : double -> void
Function<T, R> : 参数T 返回值R
IntFunction<R> : int -> R
LongFunction<R> : long -> R
DoubleFunction<R> : double -> R
IntToLongFunction : int -> long
IntToDoubleFunction : int -> double
LongToIntFunction : long -> int
LongToDoubleFunction : long -> double
DoubleToIntFunction : double -> int
DoubleToLongFunction : double -> long
Supplier<T> : 参数无 返回值T
UnaryOperator<T> : 参数T 返回值T
BinaryOperator<T> : 参数T, T 返回值T
BiFunction<T, U, R> : 参数T, U 返回值R
BiPredicate<T, U> : 参数T, U 返回值boolean
BiConsumer<T, U> : 参数T, U 返回值void
常用:
Predicate<T> Consumer<T> Function<T, R> Supplier<T>
9. 闭包
在闭包中引用的变量一定是常量(会自动给变量前面加上final修饰符)。
浙公网安备 33010602011771号