1、Lambda概述
- Lambda表达式是JDK8开始后的一种新语法形式
- 作用:简化匿名内部类的代码写法
- 注意:Lambda表达式只能简化函数式 接口 的匿名内部类的写法形式
1.1、什么是函数式接口?
- 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
- 通常我们会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口
package com.lambda;public class LambdaDemo1 {public static void main(String[] args) {/* Swimming s1 = new Swimming() {@Overridepublic void swim() {System.out.println("老师游泳贼溜~~~~");}};go(s1);*//* Swimming s1 = () -> {System.out.println("老师游泳贼溜~~~~");};go(s1);*//*go(new Swimming() {@Overridepublic void swim() {System.out.println("老师游泳贼溜~~~~");}});*/go(() -> {System.out.println("老师游泳贼溜~~~~");});}public static void go(Swimming s) {System.out.println("开始。。。");s.swim();System.out.println("结束。。。");}
}@FunctionalInterface
interface Swimming {public abstract void swim();
}
2、Lambda实战-简化常见函数式接口
package com.lambda;import java.util.Arrays;public class LambdaDemo2 {public static void main(String[] args) {Integer[] ages1 = {34, 12, 42, 23};// Arrays.sort(ages1, new Comparator<Integer>() {
// @Override
// public int compare(Integer o1, Integer o2) {
// return o2 - o1;//降序
// }
// });// Arrays.sort(ages1, (Integer o1, Integer o2) -> {
// return o2 - o1;
// });Arrays.sort(ages1, (o1, o2) -> o2 - o1);System.out.println(Arrays.toString(ages1));//[42, 34, 23, 12]}
}