Java Lambda 表达式,Java Lambda 函数接口
Java Lambda 表达式,Java Lambda 函数接口
================================
©Copyright 蕃薯耀 2021-04-15
https://www.cnblogs.com/fanshuyao/
lambda表达式允许你通过表达式来代替功能接口,该接口只能有一个要实现的方法。
优点:
1、代码简洁,简化操作
缺点:
1、有时候简洁到看不懂
2、必须要记得接口实现的方法和参数
3、开发人员未大量使用,如果工作交接给别人,别人或许看不懂,不利于团队开发
一、Java Lambda 表达式基本语法:
() -> {}
其中:
():括号表示参数
{}:表示代码块
1、parameter -> expression
单个参数,可以省略括号
代码块只有一个表达式,可以省略大括号(有返回时,同时省略return )
2、(parameter1, parameter2, …) -> expression
多个参数,不能省略括号
代码块只有一个表达式,能省略大括号
无返回时:
带大括号:
(parameter1, parameter2, …) -> {expression}
有返回时:
带大括号:
(parameter1, parameter2, …) -> {return expression}
3、(parameter1, parameter2, …) ->{ expression1; expression2; return result; }
多个参数,不能省略括号
代码块有多人表达式,不能省略大括号,有返回时,也不能省略return
4、类或对象 :: 方法
Integer :: compare
System.out :: println
二、Java Lambda 表达式使用具体示例:
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.function.Consumer; public class Lambda { public static void lambda() { Runnable r1 = new Runnable() { @Override public void run() { System.out.println("Runnable"); } }; r1.run();//不是start方法,即不是线程调用,而是调用方法 System.out.println(""); System.out.println("===Lambda表达式开始:r2"); Runnable r2 = () -> {System.out.println("Runnable");}; r2.run(); System.out.println("===Lambda表达式结束。"); System.out.println(""); System.out.println("===Lambda表达式开始:r3"); Runnable r3 = () -> System.out.println("Runnable"); r3.run(); System.out.println("===Lambda表达式结束。"); } public static void comparator() { Comparator<Integer> c1 = new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }; System.out.println(c1.compare(1, 2)); System.out.println(""); System.out.println("===Lambda表达式开始:c2"); Comparator<Integer> c2 = (Integer o1, Integer o2) -> {return o1.compareTo(o2);}; System.out.println(c2.compare(3, 2)); System.out.println("===Lambda表达式结束。"); System.out.println(""); System.out.println("===Lambda表达式开始:c3"); Comparator<Integer> c3 = (o1, o2) -> o1.compareTo(o2); System.out.println(c3.compare(5, 5)); System.out.println("===Lambda表达式结束。"); System.out.println(""); System.out.println("===Lambda表达式开始:c4"); Comparator<Integer> c4 = Integer :: compare; System.out.println(c4.compare(5, 5)); System.out.println("===Lambda表达式结束。"); } public static void foreach() { List<String> list = new ArrayList<>(); list.add("aa"); list.add("bb"); list.add("cc"); list.add("dd"); list.forEach(new Consumer<String>() { @Override public void accept(String t) { System.out.println(t); } }); System.out.println(""); System.out.println("===Lambda表达式开始:f1"); list.forEach((String t) -> {System.out.println(t);}); System.out.println("===Lambda表达式结束。"); System.out.println(""); System.out.println("===Lambda表达式开始:f2"); list.forEach(t -> System.out.println(t)); System.out.println("===Lambda表达式结束。"); System.out.println(""); System.out.println("===Lambda表达式开始:f3"); list.forEach(System.out :: println); System.out.println("===Lambda表达式结束。"); } public static void main(String[] args) { //lambda(); //comparator(); foreach(); } }
================================
©Copyright 蕃薯耀 2021-04-15
https://www.cnblogs.com/fanshuyao/