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++学习 <四> 汇编入门 
			          
			        
