第十节第八部分:Lambda表达式、Lambda表达式的省略规则
Lambda表达式介绍
Lambda表达式Comparator接口的匿名形式
Lambda表达式简化setAll方法中匿名内部类
进一步简化Lambda表达式
代码
代码一:认识Lambda表达式
package com.itheima.Lambda;public class LambdaTest1 {public static void main(String[] args) {//目标:认识Lambda表达式Animal a = new Animal() {@Overridepublic void run() {System.out.println("狗跑得贼快~~~");}};a.run();//注意:Lambda表达式并不是说能简化全部名内部类的写法,只能简化函数式接口的匿名内部类。//错误的代码!
// Animal b = ()->{
// System.out.println("狗跑得贼快~~~");
// };
// b.run();Swimming s1 = new Swimming() {@Overridepublic void swim() {System.out.println("学生游泳~~~");}};s1.swim();Swimming s2 =()->{System.out.println("学生游泳~~~");};s2.swim();}
}abstract class Animal{public abstract void run();
}interface Swimming{void swim();
}```
## 代码二:使用Lambda简化函数式接口。```java
package com.itheima.Lambda;import com.itheima.Arrays.Student;import java.util.Arrays;
import java.util.Comparator;
import java.util.function.IntToDoubleFunction;public class LambdaTest2 {public static void main(String[] args) {// 目标:使用Lambda简化函数式接口。//案例一double[] prices = {100,300,200};// 0 1 2//把所有的价格都打八折,然后又存进去。
// Arrays.setAll(prices, new IntToDoubleFunction() {
// @Override
// public double applyAsDouble(int value) {
// //value = 0 1 2
// return prices[value] * 0.8;
// }
// });
// Arrays.setAll(prices,(int value)->{ return prices[value] * 0.8;});//Arrays.setAll(prices,(value)->{ return prices[value] * 0.8;});// Arrays.setAll(prices,value->{ return prices[value] * 0.8;});Arrays.setAll(prices,value-> prices[value] * 0.8);System.out.println(Arrays.toString(prices));//案例二Student[] students = new Student[3];students[0] = new Student("飞鸟马时",18,165);students[1] = new Student("枣伊吕波",17,155);students[2] = new Student("珈百璃",19,150);// Arrays.sort(students, new Comparator<Student>() {
// @Override
// public int compare(Student o1, Student o2) {
// return Double.compare(o2.getHeight(), o1.getHeight());//降序
// }
// });// Arrays.sort(students, (Student o1, Student o2)-> {
// return Double.compare(o2.getHeight(), o1.getHeight());//降序
// }
// );// Arrays.sort(students, ( o1, o2)-> {
// return Double.compare(o2.getHeight(), o1.getHeight());//降序
// }
// );Arrays.sort(students, ( o1, o2)->Double.compare(o2.getHeight(), o1.getHeight()));System.out.println(Arrays.toString(students));}
}