1 Lambda表达式
Lambda函数,也称为Lambda表达式,是Java 8版本新增的一项功能。它提供了一种简洁的方式来定义小型匿名函数,这些函数可以作为参数传递给其他方法或作为返回值使用。
语法:
Lambda表达式可以使用这个语法->来表示。
示例:
零参数:() -> expression
Output: We’re learning Java 8 fundamentals !
一个参数:parameter -> expression
Output: We're learning Lambda
多个参数:(parameter1, parameter2) -> expression
Output: We're learning Lambda and it's uses
复杂表达式:(parameter1, parameter2) -> { complex code block }
Output: We’re learning Lambda and it’s uses
This is a multi line lambda
This is a complex lambda implementation
2 方法引用
方法引用是一种紧凑、易读的Lambda表达式,用于已经具有名称的方法。简单地说,我们可以使用方法引用从Lambda函数中调用方法。
语法:
Object::method
让我们来看看如何使用Lambda打印列表中的元素:
可以使用方法引用,如下所示:
如您所见,这使代码更加清晰、精确和易于阅读。
同样地,我们可以使用Classname::methodName来表示对静态方法的调用。
同时,我们可以使用Object to be instantiated::new来使用方法引用引用构造函数。
方法引用也可以用于Comparator。
按名称对水果列表排序:
3 Lambda的不同用途
遍历列表
遍历Map
创建Runnable和Callable
Runnable是一个函数式接口,因此我们可以使用Lambda表达式来表示它。
使用匿名类创建Runnable的典型方式
同样的Lambda表达式实现如下:
同样地,Callable也可以实现:
Predicate
使用Lambda函数表示Predicate:
Output: True
Consumer
使用Lambda函数表示Consumer:
Example 1 output: 10,Example 2 output: first \n second
Comparator
Comparator是Java中的一个函数式接口,因此我们可以使用Lambda函数来表示它。
下面我们使用Lambda创建一个Comparator:
让我们看看更多的例子:
按自然顺序排序数字列表:
如果我们要根据多个参数对列表进行排序,则可以使用Comparator的thenComparing方法,如下所示:
将排序后的列表反转:
4 总结
本文中,我们探讨了Lambda函数,看了很多不同的Lambda函数的例子,我们还了解了如何使用方法引用和Comparator。