0


reduce归约:深入理解java8中的归约reduce

🍰 个人主页:小白不加班_
🍞文章有不合理的地方请各位大佬指正。
🍉文章不定期持续更新,如果我的文章对你有帮助➡️ 关注🙏🏻 点赞👍 收藏⭐️

文章目录

常见场景图示

我们常见使用场景:累加、求最大值 如图示
累加:在这里插入图片描述

求最大值:在这里插入图片描述

reduce

中的

BiFunction

BinaryOperator

是什么

reduce定义如下:

 T reduce(T identity, BinaryOperator<T> accumulator);

首先了解一下

BiFunction

BinaryOperator

带有

Binary

Bi

关键字都是二元运算(就是谓词带有 有两个形参)
在这里插入图片描述

BiFunction

函数式接口如下:
传入 T类型变量t U类型变量u 返回R类型变量

@FunctionalInterface// (T t,U u)->RpublicinterfaceBiFunction<T,U,R>{Rapply(T t,U u);}
BinaryOperator

函数式接口如下:
继承BiFunction 形参类型和返回类型相同

@FunctionalInterfacepublicinterfaceBinaryOperator<T>extendsBiFunction<T,T,T>{}

理解

reduce

reduce常见的定义方式:

T reduce(T identity, BinaryOperator accumulator);
Optional<T> reduce(BinaryOperator<T> accumulator);

下面详细解释

T reduce(T identity, BinaryOperator accumulator);

第一个参数传入T类型值,第二分谓词

(T t,T t)->T

返回值类型为T

通俗点总结:
一个初始值
一个Lambda来把两个流元素结合起来并产生一个新值
常用:累加、累积

Optional reduce(BinaryOperator accumulator);

谓词

(T t,T t)->T

返回值类型为T

Optional容器类表示一个值存在或者不存在,避免和null检查

reduce要考虑新的值和下一个元素,将流中的第一个元素作为初始值,比较产生最大值,然后继续和下一个元素比较。
常用:最大值,最小值

代码举例

最开始的图示的代码如下:
累加:

List<Integer> integers =Arrays.asList(4,5,3,9);Integer reduce = integers.stream().reduce(0,(a, b)-> a + b);System.out.println("求和:"+reduce);//求和:21

在这里插入图片描述
求最大值

List<Integer> integers =Arrays.asList(4,5,3,9);Optional<Integer> reduce = integers.stream().reduce(Integer::max);System.out.println("最大值:"+ reduce.get());//最大值:9

在这里插入图片描述

Optional

的详细使用改天再更,关注不错过~~~~

🍉文章不定期持续更新,如果我的文章对你有帮助 ➡️ 关注 👍点赞 ⭐️收藏
🙏🏻 你们的支持是我 更新的动力


本文转载自: https://blog.csdn.net/LYGCSDN_/article/details/140337150
版权归原作者 小白不加班 所有, 如有侵权,请联系我们删除。

“reduce归约:深入理解java8中的归约reduce”的评论:

还没有评论