总结:java8.的lambda表达式
程序员文章站
2022-05-11 13:46:49
...
概念
百度百科解释:
Lambda表示(Lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
特点
两个特点:
(1)Lambda是匿名函数(假设使用场景,想写一个函数实现,但是又无法准确的定义这个函数名的时候,说白了就是不想费神,费事)很大程度的减少代码冗余,简化开发。
(2)Lambda是可传递的(即可以将整个Lambda表达式作为参数传给其他函数)
语法
核心操作符号->,该操作符一般被称为“Lambda操作符或者箭头操作符”,它将表达式分为左右两部分。
左边部分表示:规定表达式所需的所有参数。
右边部分表示:可以理解为函数主要函数体,即这个表达式要主要实现的功能。也叫Lambda体。
格式范例
(1)无参无返回值:
Runnable r = () -> System.out.println("Hello Lambda!");
(2)有一个参数的:
Consumer<String> con = (x) -> System.out.println(x);
(3)只有一个参数时,包括参数的括号可以省略:
Consumer<String> con = x -> System.out.println(x);
(4)需要两个参数,并且有返回值
Comparator<Integer> com = (x, y) -> {
System.out.println("xxxxx");
return Integer.compare(x, y);
};
(5)当Lambda体只有一条语句时,return关键字和大括号可以省略
Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
范例
实现一个线程的区别?
public class Test {
public static void main(String[] args) {
// Java8之前:
new Thread(new Runnable() {
public void run() {
System.out.println("hello world");
}
}).start();
// Java8方式:
new Thread(() -> System.out.println("hello world")).start();
}
}
集合元素的遍历:
public class Test2 {
public static void main(String[] args) {
// Java8之前:
List<String> list1 = Arrays.asList("a", "b", "c", "d");
for (String str : list1) {
System.out.println(str);
}
// Java 8之后:
List list2 = Arrays.asList("a", "b", "c", "d");
list2.forEach(n -> System.out.println(n));
// 使用Java 8的方法引用更方便,方法引用由::双冒号操作符标示,
list2.forEach(System.out::println);
}
}
[……学习中……]