lambda
-
lambda简介:
lambda表达式是JDK8之后推出的新特性lambda使得我们可以"函数式编程"
lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)
lambda最直接的感受是可以以更精简的代码完成匿名内部类的创建
-
lambda语法:
(参数列表)->{
方法体
}(parameters) -> expression
或
(parameters) ->{ statements; } -
重要特性:
只有接口中含有一个抽象方法时,才可以使用lambda创建以下是lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
示例一:
Runnable r1 = new Runnable() {
public void run() {
System.out.println("hello");
}
};
// lambda表达式
Runnable r2 = ()->{
System.out.println("hello");
};
示例二:
public class LambdaDemo2 {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("哈哈哈");
list.add("啊啊啊啊");
list.add("哦哦");
// Comparator<String> c = new Comparator<String>() {
// public int compare(String o1,String o2) {
// return o1.length()-o2.length();
// }
// };
// Comparator<String> c = (o1,o2)->{
// return o1.length()-o2.length();
// };
// Comparator<String> c = (o1,o2)->o1.length()-o2.length();
Collections.sort(list,(o1,o2)->o1.length()-o2.length());
System.out.println(list); // [传奇, 苍老师, 小泽老师]
}
}