一、Lambda——匿名函数
等效方法引用
Lambda表达式 | 等效方法引用 |
---|---|
(String s) -> System.out.println(s) | System.out::println |
((str, i) -> str.substring(i) | String::substring |
() -> Thread.currentThread().dumpStack() | Thread.currentThread()::dumpStack |
函数式接口就是只定义一个抽象方法的接口。
Lambda的基本语法是:
(parameters) -> expression
(parameters) -> { statements; }
举例:
① Lambda表达式具有一个 String 类型的参数并返回一个 int 。
Lambda没有 return 语句,因为已经隐含了 return
(String s) -> s.length()
② Lambda表达式有一个Apple 类 型 的参数并返回一个 boolean
(Apple a) -> a.getWeight() > 150
③ Lambda表达式具有两个 int 类型的参数而没有返回值( void 返回)。
注意Lambda表达式可以包含多行语句,这里是两行。
(int x, int y) -> {
System.out.println("Result:");
System.out.println(x+y);
}
④ Lambda表达式没有参数,返回一个int 。
() -> 42
⑤ Lambda表达式具有两个 Apple 类型的参数,返回一个 int :比较两个 Apple 的重量。
(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight())
对于,对参数有修改,或者修饰,则不能使用方法引用,需要输入完成的lambda表达式
list.forEach((String s) -> System.out.println("*" + s + "*"));
list.forEach