java8之Lambda
Lambda 表达式基础语法:
java8中引入了一个新的操作符 "->" (lambda操作符)
"->" 左侧Lambda表达式参数列表
"->" 右侧Lambda体,Lambda表达式所需执行的功能
语法格式一:无参,无返回值
() -> { }
Runnable runnable = () -> System.out.println("hello lambda test");
runnable.run();
相当于
Runnable runnable = new Runnable() { @Override public void run() { System.out.println("hello test"); } };
runnable.run();
语法格式二: 一参,无返回值
(e) -> { } 或 e -> { } :一参时参数括号可写可不写
Consumer<String> consumer = s -> System.out.println(s);
consumer.accept("Hello test");
语法格式二: 多参,有返回值
(a,b,...) -> { }
:Lambda体中只有一条语句时,{}及 return 可写可不写
:Lambda参数列表数据类型可以省略不写(写的话要所有参数全写),JVM编译器会根据上下文推断出数据类型
Comparator<Integer> comparator = (x,y) -> Integer.compare(x,y); Comparator<Integer> comparator2 = (x,y) -> { System.out.println("比较x,y大小"); return Integer.compare(x,y); };
Lambda 表达式需要”函数式接口“的支持
函数式接口:接口中只有一个抽象方法的接口,可以使用注解@FunctionalInterface修饰来检查是否为函数式接口。