Java Lambda 表达式,Java Lambda 函数接口
Java Lambda 表达式,Java Lambda 函数接口
================================
©Copyright 蕃薯耀 2021-04-15
https://blog.csdn.net/w995223851
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;
/**
*
lambda表达式允许你通过表达式来代替功能接口,该接口只能有一个要实现的方法。
优点:
1、代码简洁,简化操作
缺点:
1、有时候简洁到看不懂
2、必须要记得接口实现的方法和参数
3、开发人员未大量使用,如果工作交接给别人,别人或许看不懂,不利于团队开发
Java Lambda 表达式基本语法:
() -> {}
其中:
():括号表示参数
{}:表示代码块
*
*/
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