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修饰来检查是否为函数式接口。

原文地址:https://www.cnblogs.com/mingforyou/p/14725528.html