可以简化匿名内部类的书写
public static void main(String[] args) { Integer[] arr = {2, 4, 1, 5, 7, 4, 8, 0, 9, 2}; /* Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1 - o2; } });*/ Arrays.sort(arr, (Integer o1, Integer o2)-> { return o1 - o2; } ); System.out.println(Arrays.toString(arr)); }
函数式编程
是一种思想特点
面向对象:先找对象,让对象做事情
函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做
Lambda表达式就是函数时编程的思想体现
注意点:
Lambda表达式可以简化匿名内部类的书写
Lambda表达式只能简化函数式接口的匿名内部类的书写
函数式接口:有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionnalInterFace注解
//1.利用匿名内部类的形式去调用 //调用一个方法时,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象 //如果实现类对象用到一次,就可以用匿名内部类的方法 methed(new Swim() { @Override public void swimming() { System.out.println("游泳"); } }); //2.Lambda 表达式改写 methed( ()->{ System.out.println("游泳!!!"); } ); } public static void methed(Swim s){ s.swimming(); } } interface Swim{ public abstract void swimming();
1.Lambda表达式的基本作用
简化函数式接口匿名内部类的写法
2.Lambda表达式有什么使用前提?
必须是接口的匿名内部类,接口中只能有一个抽象方法
3.Lambda的好处?
Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁,更灵活的代码。。
Lambda表达式的省略写法
核心:可推导,可省略
参数类型可以省略不写
如果只有一个参数,参数类型可以省略,同时()也可以省略
如果Lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略
Integer[] arr = {2, 4, 1, 5, 7, 4, 8, 0, 9, 2}; /* Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1 - o2; } });*/ Arrays.sort(arr, (o1, o2)-> o1 - o2); System.out.println(Arrays.toString(arr));