美文网首页
二、Lambda表达式

二、Lambda表达式

作者: 明_ca66 | 来源:发表于2018-07-06 18:22 被阅读0次

一、Lambda表达式(https://www.zhihu.com/question/20125256)

可理解为:匿名函数

1.场景:

你在某处就真的只需要一个能做一件事情的函数而已,连它叫什么名字都无关紧要。

2.场景举例:

方法中一部分只用一次,怕代码太长需要代码提取,但是又不想新建一个方法,因为这个方法会污染这个类。

3.理解举例:

map(f,a)——将函数f依次套用在a的每一个元素上,对a中的元素遍历,依次作为参数传入到f中做函数调用

4.java中的lambda表达式:

java使用“函数接口”表示lambda表达式类型:确保对java语言旧版本的向后兼容性的有效途径

1)把一块代码赋值给一个java变量


20180706181850.png
-> 20180706181923.png

被赋值给一个变量的函数->即lambda表达式

2)所有lambda类型都是一个接口,lambda表达式本身就是这个接口类型的实现

3)函数式接口:只有一个接口函数需要被实现的接口类型->函数式接口,

1.png

完整的lambda表达式定义

2.png

4)总结:lambda表达式,就是函数式接口的实现。

函数式接口 变量名 = lambda表达式

5.作用

把代码变的更简洁

11.png

lambda可以直接赋值给一个变量,故可以把lambda表达式作为参数传给函数

112.png

不用去实现java接口

6.java.util.funcation中函数式接口定义

Predicate<T>断言

针对一个参数的断言,返回值boolean

函数:boolean test(T t)

对应两个参数的函数接口:BiPredicate

Consumer<T>消费者

针对一个参数的操作,返回值void,希望通过副作用来操作对象参数

函数:void accept(T t);

对应两个参数的函数接口:BiConsumer

Function<T,R>函数

接受一个参数,并且有一个返回值

函数:R apply(T t)
对应两个参数的函数接口:BiFunction

Supplier<T>函数

提供响应结果,无参数

函数:T get()

对应

Double、Int、Long都有上述对应函数接口

7.配合Optional<T>

相关文章

网友评论

      本文标题:二、Lambda表达式

      本文链接:https://www.haomeiwen.com/subject/xnpbuftx.html