java之Lambda表达式简化代码
Lambda的使用前提
1. Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意使用 Lambda必须具有接口,且要求接口中有且仅有一个轴象方法。无论是DK内置的 Runnable、 Comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯时,才可以使用 Lambda。 2.使用 Lambda必须具有上下文推断。也就是方法的参数或局部变量类型必须为 Lambda对应的接口类型,才能使用 Lambda作为该接口的实例。
备注:有且仅有一个抽象方法的接口,称为函数式接口
简化使用匿名内部类的代码
public class DemoArrays { public static void main(String[] args) { Person[] arr = { new Person("张三", 20), new Person("李四", 22), new Person("王五", 19) }; // Arrays.sort(arr, new Comparator<Person>() { // @Override // public int compare(Person o1, Person o2) { // return o1.getAge()-o2.getAge(); // } // }); //用Lambda表达式简化 // Arrays.sort(arr,(Person o1, Person o2)->{ // return o1.getAge()-o2.getAge(); // }); //继续简化 // Arrays.sort(arr,(Person o1, Person o2)->o1.getAge()-o2.getAge()); //再升级 Arrays.sort(arr, Comparator.comparingInt(Person::getAge)); for (Person person : arr) { System.out.println(person.getName()+": "+person.getAge()); } } }
Lambda:表达式:是可推导,可以省,凡是根据上下文推导出来的内容,都可以省略书写
可以省略的内容
1.(参数列表):括号中参数列表的数据类型,可以省略不写
2.(参数列表):括号中的参数如果只有一个,那么类型和()都可以省
3.{一些代码]:如果们中的代码只有一行,无论是否有返回值,都可以省略(}, return,分号)
注意:要省略{}, return,分号必须一起省略
例:invokeCalc(a,b,c,(a,b,c)->a+b+c);
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
C++学习 <四> 汇编入门