lambda表达式
- JDK8推出后推出的一个新特性。lambda可以用更简便的语法创建匿名内部类
语法:(参数列表)->{方法体}
需要注意,lambda创建的匿名内部类所属的接口必须只能有一个抽象方法,否则编译不通过
Runnable r1 = new Runnable() {
public void run() {
}
};
//1.匿名内部类的所属接口只有一个抽象方法
Runnable r2 = ()->{
System.out.println("lambda");
};
//若抽象方法里只有一句话,还可以继续简写
Runnable r3 = ()->System.out.println("lambda");
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("1");
list.add("11");
list.add("111");
Collections.sort(list,new Comparator<String>() {
public int compare(String o1,String o2) {
return o1.length()-o2.length();
}
});
//只有一个抽象方法的匿名内部类,可以用lemada表达式简写
Collections.sort(list,(o1,o2)->{
return o1.length()-o2.length();
});
//方法里只有一句话,可以去掉大括号,这句话含有return的话,需要把return去掉。
Collections.sort(list,(o1,o2)->o1.length()-o2.length());
}