Lambda 允许把函数作为参数传递进方法中。
Lambda表达式的重要特征:
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
变量作用域
lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
Lambda表达式的基本语法:
(parameters) -> expression 或 (parameters) ->{ statements; }
Lambda小程序,遍历 List 集合
String[] array = {"a","b","c"}; List<String> list = Arrays.asList(array); System.out.println("方式一:原始方式"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } System.out.println("方式二:增强 for 循环"); for (String s : list) { System.out.println(s); } System.out.println("方式三:lambda 表达式"); list.forEach( e -> System.out.println(e) ); System.out.println("方式四:lambda 表达式"); list.forEach( (e) -> {System.out.println(e);} ); System.out.println("方式五:lambda 表达式 之 静态方法引用"); list.forEach(System.out::println);
Lambda 小程序,使用 Lambda 表达式实现匿名内部类
System.out.println("方式一:匿名内部类实现 Runnable接口 run 方法,并使用多线程运行"); new Thread(new Runnable() { @Override public void run() { System.out.println("Hello world !"); } }).start(); System.out.println("方式一:Lambda 实现 Runnable接口,并使用多线程运行"); new Thread(() -> System.out.println("Hello world !")).start(); System.out.println("方式二:匿名内部类实现 Runnable接口 run 方法"); Runnable r1 = new Runnable() { @Override public void run() { System.out.println("Hello world !"); } }; r1.run(); System.out.println("方式二:Lambda 实现 Runnable接口"); Runnable r2 = () -> System.out.println("Hello world !"); r2.run();
String[] array = {"a","b","c"};
List<String> list = Arrays.asList(array);
System.out.println("方式一:原始方式");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("方式二:增强 for 循环");
for (String s : list) {
System.out.println(s);
}
System.out.println("方式三:lambda 表达式");
list.forEach( e -> System.out.println(e) );
System.out.println("方式四:lambda 表达式");
list.forEach( (e) -> {System.out.println(e);} );
System.out.println("方式五:lambda 表达式 之 静态方法引用");
list.forEach(System.out::println);
原文:https://www.cnblogs.com/tangshengwei/p/12587976.html