Lambda表达式概述:
编程常常需要大量的函数,如果每一个函数都需要定义类去实现函数接口的话,那么会大大增加编程难度,所以Java8后便诞生了Lambda表达式来定义匿名函数,这样才能使编程更加得心应手。Lambda是一个匿名函数,可以写出更简洁、更灵活的代码。
Lambda表达式语法:
1.无参数,无返回值
()->System.out.println("Hello");
2.有参数,无返回值(若只有一个参数,小括号可以省略不写)
(x)->System.out.println("x");
3.有两个以上参数,有返回值,并且有多个语句(若只有一条语句,return 和 大括号都可以省略)
Comparator<Integer> com=(x,y)->{
System.out.println("Hello");
return Integer.compare(x,y);
}
代码实现:
package Test1;
interface Hello{
void hello();
}
public class Main {
public static void main(String[] args){
//正常实现一个接口
Hello h =new Hello() {
public void hello(){
System.out.println("hello 1");
}
};
h.hello();
System.out.println("--------------");
//使用Lambda表达式
Hello h1=()->System.out.println("hello 2");
h1.hello();
}
}
运行结果:
hello 1
--------------
hello 2
在集合中的实现:
package Test2;
import java.util.ArrayList;
public class Main {
public static void main(String[] args){
ArrayList<String>list =new ArrayList<>();
list.add("3");
list.add("1");
list.add("2");
System.out.println(list);
System.out.println("-------------");
//利用Lambda表达式排序
list.sort((o1, o2) ->o1.compareTo(o2) );
System.out.println(list);
System.out.println("-------------");
list.forEach(o3->System.out.println(o3));
}
}
运行结果:
[3, 1, 2]
-------------
[1, 2, 3]
-------------
1
2
3