一、Lambda表达式基础语法
Java8中引入了一个新的操作符 “->” 该操作符称为箭头操作符或Lambda操作符
该操作符将Lambda表达式拆分成两部分:
Lambda操作符左侧:表达式的参数列表。
Lambda操作符右侧:表达式中需执行的功能,即lambda体。
格式一、无参无返回值
() -> System.out.println(“Hello”);
//不使用Lambda表达式👇
Runnable r = new Runnable(){
@Override
public void run(){
System.out.println("Hello");
}
};
r.run();
//使用Lambda表达式👇
Runnable r1 = () -> System.out.println("Hello");
r1.run();
格式二:有一个参数无返回值
(x) -> System.out.println(x);
其中x可以换成任意符号来表示参数,且( )可以省略不写
Comsumer<String> com = x -> System.out.println(x);
com.accept("Hello");
格式三:有两个以上的参数,且Lambda体中有多条语句
Comparator com(x, y, …) -> {
语句一;
语句二;
…
}
Comparator<Integer> com(x, y) -> {
System.out.println("Hello");
return Integer.compare(x, y);
}
格式四:若Lambda体中只有一条语句,return和大括号都可以省略不写
Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
格式五:Lambda表达式的参数列表的数据类型可以省略不写,因为JVM编译器通过上下文可以推断出,即“类型判断”
二、Lambda表达式需要“函数式接口”的支持
函数式接口:
接口中只有一个抽象方法的接口,称为函数式接口,可以使用注解@FunctionalInterface来检查是否是函数式接口