Java——lambda表达式
1、lambda表达式是什么?
lambda表达式是Java 8中引入的一种新特性,它可以让我们更简洁地编写函数式接口的实现;它是一种匿名函数,可以作为参数传递给方法或存储在变量中;Lambda 表达式的优势主要有以下几个方面:
- 简洁:Lambda 表达式可以用更少的代码来完成相同的功能。相比于传统的匿名内部类,Lambda 表达式更加简洁明了,可以极大地提高代码的可读性和可维护性。
- 易于理解:Lambda 表达式的语法非常简单,只需要一个箭头符号和一些参数即可。这使得代码更加易于理解和学习。
- 可读性强:Lambda 表达式可以使代码更加易读。它可以将代码分成更小的块,使得代码更加易于理解和维护。
- 可重用性强:Lambda 表达式可以被多次使用,可以作为参数传递给不同的方法。这使得代码更加灵活和可重用。
- 并行处理:Lambda 表达式可以用于并行处理,可以极大地提高程序的性能。
- 函数式编程:Lambda 表达式是函数式编程的一种体现,它可以使程序更加简洁、易读、易维护和可扩展。
2、符号 ->
在 Java 中,lambda 表达式使用箭头符号 ->
来分隔参数列表和lambda体。箭头符号的左侧是参数列表,可以是空的或非空的,而右侧是lambda体,它可以是一个表达式或一个代码块。
当lambda表达式只有一个参数时,可以省略参数列表中的括号。例如,(s) -> System.out.println(s)
可以简写为 s -> System.out.println(s)
。
当lambda体只有一行代码时,可以省略花括号和分号。例如,s -> System.out.println(s)
可以简写为 System.out::println
。
3、关于lambda表达式的例子
1、集合遍历
List<String> list = Arrays.asList("orange","apple","banana");
常规写法
for (String s : list) {
System.out.println("01-常规:"+s);
}
lambda表达式写法
list.forEach(s -> System.out.println("01-lambda:"+s));
2、排序
List<String> list = Arrays.asList("orange","apple","banana");
常规写法
/**
这段代码使用了 Java 中的 Collections.sort 方法来对列表中的元素进行排序,其中 list 是一个字符串类型的列表对象。
在这个例子中,我们使用了一个匿名内部类来创建一个 Comparator 对象,用于比较字符串类型的元素。Comparator 是一个函数式接口,它定义了一个 compare 方法,接受两个参数并返回一个整数值。在这个匿名内部类中,我们实现了 compare 方法,使用 o1.compareTo(o2) 方法来比较两个字符串类型的元素,并返回比较结果。
然后,我们将这个 Comparator 对象作为第二个参数传递给 Collections.sort 方法,以便在排序时使用它进行比较。最后,我们在控制台中打印出排序后的列表对象。
因此,这段代码的作用是对字符串类型的列表对象进行排序,并在控制台中打印出排序后的列表对象
*/
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
System.out.println("02-常规:"+list);
lambda表达式写法
/**
这段代码与之前的代码实现了相同的功能,使用了 Java 中的 Collections.sort 方法来对列表中的元素进行排序,其中 list 是一个字符串类型的列表对象。
不同之处在于,这里使用了 Java 8 中的 lambda 表达式来创建一个 Comparator 对象,而不是使用匿名内部类。lambda 表达式 (o1,o2) -> o1.compareTo(o2) 表示一个接受两个字符串类型参数并返回它们之间比较结果的函数。
然后,我们将这个 lambda 表达式作为第二个参数传递给 Collections.sort 方法,以便在排序时使用它进行比较。最后,我们在控制台中打印出排序后的列表对象。
因此,这段代码的作用与之前的代码相同,对字符串类型的列表对象进行排序,并在控制台中打印出排序后的列表对象。
*/
Collections.sort(list,(o1,o2) -> o1.compareTo(o2));
3、过滤
List