lambda语法总结:
lambda表达式的写法,总共存在以下几种,各种情况的注意点如下:
- 无参,无返回值
- 有参无返回值
- 如果只有一个参数,参数的小括号可以省略
- 如果有两个参数,而且有返回值
- 如果有两个参数,实现提只有一行代码,那么花括号跟return可以省略
- 如果有两个参数,等号左右使用了参数化类型,那么参数部分可以不写类型。(类型推断)
试例:
public class LambdaTest3 {
public static void main(String[] args) {
LambdaTest3 lambdaTest = new LambdaTest3();
lambdaTest.test3();
}
/**
* 实例一:无参吴返回值
*/
public void test1() {
// 1. 普通代码实现
Runnable runnable1 = new Runnable() {
@Override
public void run() {
System.out.println("helloWord");
}
};
runnable1.run();
// 2. lambda代码实现
Runnable runnable2 = () -> System.out.println("helloWord");
runnable2.run();
}
/**
* 实例二:有一个参数,无返回值
* 说明:一个参数时,参数的括号可以省略
*/
public void test2() {
// 1. 跟2相同的意思。x的括号()可以省略,如2所示
Consumer<String> consumer1 = (x) -> System.out.println(x);
consumer1.accept("helloWord");
// 2.
Consumer<String> consumer2 = x -> System.out.println(x);
consumer2.accept("helloWord");
}
/**
* 实例三:有多个参数,而且有返回值
* 说明:由于泛型,lambda传递参数的类型可以省略
* 当实现内容只有一行时,花括号跟return可以省略
*/
public void test3() {
// 1. 更2、3相同的意思。lambda传递参数的类型可以省略,如2、3所示
Comparator<Integer> comparator1 = (Integer x, Integer y) -> {
return Integer.compare(x, y);
};
System.out.println(comparator1.compare(1, 2));
// 2. 更3相同的意思。当实现内容只有一行时,花括号跟return可以省略,如3所示
Comparator<Integer> comparator2 = (x, y) -> {
return Integer.compare(x, y);
};
System.out.println(comparator2.compare(1, 2));
// 3. 最近简略写法
Comparator<Integer> comparator3 = (x, y) -> Integer.compare(x, y);
System.out.println(comparator3.compare(1, 2));
}
}