Lambda表达式
Lambda(读:莱姆大)表达式,主要用于简化函数式接口的匿名内部类的书写。
上述sort方法可以用Lambda简化:
import java.util.Arrays;
public class sortDemo2 {
public static void main(String[] args) {
Integer[] arr = {4, 5, 1, 8, 6, 34, 52, 33, 9, 23};
Arrays.sort(arr, (Integer o1, Integer o2) -> {
return o2 - o1;
}
);
System.out.println(Arrays.toString(arr)); //[52, 34, 33, 23, 9, 8, 6, 5, 4, 1]
}
}
函数式编程
函数式编程是一种思想。
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
即,我们只在乎方法体中的逻辑,而不在意创建出的这个对象。
Lambda表达式就是函数式编程的思想体现。
Lambda表达式
JDK8以后
语法:
(形参) -> {
方法体;
}
注意:
- Lambda表达式只能简化函数式接口的匿名内部类
函数式接口: 接口内部有且只有一个抽象方法的接口。
接口上方可以加
@FunctionalInterface注解。
Lambda省略格式
省略规则:可推导的可不写
参数类型可以省略- 如果只有一个参数,
参数类型和()都可以省略 - 如果表达式方法体只有一行:
{} ; return可以同时省略不写
上述用Lambda简化的sort方法可以继续简化:
import java.util.Arrays;
public class sortDemo2 {
public static void main(String[] args) {
Integer[] arr = {4, 5, 1, 8, 6, 34, 52, 33, 9, 23};
//参数类型可以省略
//如果表达式方法体只有一行 {} ; return 可以同时省略不写
Arrays.sort(arr, (o1, o2) -> o2 - o1);
System.out.println(Arrays.toString(arr)); //[52, 34, 33, 23, 9, 8, 6, 5, 4, 1]
}
}
函数式编程
函数式编程是一种思想。
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做。
即,我们只在乎方法体中的逻辑,而不在意创建出的这个对象。
Lambda表达式就是函数式编程的思想体现。
Lambda表达式
JDK8以后
语法:
(形参) -> {
方法体;
}
注意:
- Lambda表达式只能简化函数式接口的匿名内部类
函数式接口:有且只有一个抽象方法的接口。
接口上方可以加@FunctionalInterface注解。
Arrays.sort(T[] a, Comparator<? super T> c) 中第二个参数Comparator接口就是一个函数式接口,如下:

Lambda省略格式
省略规则:
可推导的可不写
参数类型可以省略- 如果只有一个参数,
参数类型和()都可以省略 - 如果表达式方法体只有一行:
{} ; return可以同时省略不写
上述用Lambda简化的sort方法可以继续简化:
import java.util.Arrays;
public class sortDemo2 {
public static void main(String[] args) {
Integer[] arr = {4, 5, 1, 8, 6, 34, 52, 33, 9, 23};
//参数类型可以省略
//如果表达式方法体只有一行 {} ; return 可以同时省略不写
Arrays.sort(arr, (o1, o2) -> o2 - o1);
System.out.println(Arrays.toString(arr)); //[52, 34, 33, 23, 9, 8, 6, 5, 4, 1]
}
}
博客介绍了Java中的Lambda表达式和函数式编程。Lambda表达式用于简化函数式接口的匿名内部类书写,体现了函数式编程思想,即忽略面向对象复杂语法,强调做什么而非谁去做。还说明了Lambda表达式的语法、适用条件及省略格式规则。
626

被折叠的 条评论
为什么被折叠?



