当前位置: 首页 > news >正文

博敏网站建设网站域名是什么东西

博敏网站建设,网站域名是什么东西,太原网站建设方案服务,贺州网站建转载自 跟我学 Java 8 新特性之 Stream 流#xff08;三#xff09;缩减操作 和前面两篇文章一起服用#xff0c;效果会更佳。通过对流API的基础体验Demo和关键知识点的讲解#xff0c;相信大家对流API都有一定的认识了#xff0c;但是流API强大的功能#xff0c;可不…转载自   跟我学 Java 8 新特性之 Stream 流三缩减操作 和前面两篇文章一起服用效果会更佳。通过对流API的基础体验Demo和关键知识点的讲解相信大家对流API都有一定的认识了但是流API强大的功能可不仅仅像前面两篇文章中说的那样简单大家应该注意到在第二篇中我对Stream接口进行介绍的时候并没有把他的全部方法都进行了解析说明。 没错从这一篇开始那些还没有讲解的方法很可能就开始变成我们的主角了大家从题目上面应该知道了本期我们要讲的是流API的缩减操作。 何为缩减操作 我们先考虑一下min()和max()这两个方法我们在第一篇和第二篇中均有提到其中min()是返回流中的最小值而max()返回流中最大值前提是他们存在。 他们之间的特点是什么 ①都返回了一个值 ②由一可知他们是终端操作。 如果我们用流API的术语来形容前面这两种特性的结合体的话它们代表了缩减操作。因为每个缩减操作都把一个流缩减为一个值好比最大值最小值。当然流API把min()和max()count()这些操作称为特例缩减。 即然说到了特例肯定就有泛化这种概念了他就是reduce()方法了其实第二篇当中他已经出现过了只是当时我没有去强调他。 public interface StreamT extends BaseStreamT, StreamT {//、、、忽略其他无关紧要的元素 T reduce(T identity, BinaryOperatorT accumulator); OptionalT reduce(BinaryOperatorT accumulator); U U reduce(U identity,BiFunctionU, ? super T, U accumulator, BinaryOperatorU combiner);Stream接口定义了三个版本的reduce()我们先使用前面两个, T reduce(T identity, BinaryOperatorT accumulator);//1 OptionalT reduce(BinaryOperatorT accumulator);//2 第一个版本返回的是一个T类型的对象T代表的是流中的元素类型第二个版本是返回一个Optional类型对象。对于这两种形式accumulator是一个操作两个值并得到结果的函数。在第一个版本当中identity是这样一个值对于涉及identity和流中任意的累积操作得到的结果就是元素自身没有任何改变。比如如果是加法他就是0如果是乘法他就是1。 其中的accumulator是一个BinaryOperator的类型他是java.util.function包中声明的函数式接口它扩展了BiFunction函数式接口. FunctionalInterface public interface BinaryOperatorT extends BiFunctionT,T,T {}FunctionalInterface public interface BiFunctionT, U, R {R apply(T t, U u);//notice } BiFunction接口中的apply()方法的原型在 //notice。其中R指定了结果的类型TU分别是第一参数的类型和第二个参数的类型因此apply()对他的两个操作数(t,u)应用到同一个函数上并返回结果而对BinaryOperator来说他在扩展 BiFunction时指定了所有的类型参数都是相同的T因此对于BinaryOperator函数式接口的apply来说他也就变成了 T apply(T t, T u),此外还有一个需要注意的地方是在应用reduce()时apply()的第一个参数t,包含的是一个结果u包含的是下一个元素。在第一次调用时将取决于使用reduce()的版本t可能是单位值或者是前一个元素。 缩减操作的三个约束 无状态 不干预 关联性 无状态这里可不是LOL的那个无状态毕竟他退役了。相信读过第二篇文章的同学已经很容易理解了简单来说无状态就是每个元素都被单独地处理他和流中的其它元素是没有任何依赖关系的。不干预是指操作数不会改变数据源。最后操作必须具有关联性这里的关联性是指标准的数学含义即给定一个关联运算符在一系列操作中使用该运算符先处理哪一对操作数是无关紧要的。比如(1 * 2) * 3 1 * (2 * 3)。  其中关联性在并行流中是至关重要的。下面我用一个简单的例子带着大家实战一下泛化缩减操作reduce()的使用。 public class Main {public static void main(String[] args) {learnStream();}private static void learnStream() {ListInteger lists new ArrayList();lists.add(1);lists.add(2);lists.add(3);lists.add(4);lists.add(5);lists.add(6);OptionalInteger sum lists.stream().reduce((a, b) - a b);if (sum.isPresent()) System.out.println(list的总和为: sum.get());//21// lists.stream().reduce((a, b) - a b).ifPresent(System.out::println);Integer sum2 lists.stream().reduce(0, (a, b) - a b);//21System.out.println(list的总和为: sum2);OptionalInteger product lists.stream().reduce((a, b) - a * b);if (product.isPresent()) System.out.println(list的积为: product.get());//720Integer product2 lists.stream().reduce(1, (a, b) - a * b);System.out.println(list的积为: product2);//720} } 这个Demo主要是计算了一个list里面的总和积的操作大家可以和传统的算总和积的方法进行对照比一比衡量一下就有自己的答案了。但是如果你以为流API仅此而已那你就错了。 越是后面的东西就越装B我在刚知道他们的时候反正是被吓了一跳的但这些都是后话了现在我们来详解一下Demo,并给出扩展的方向我们这个例子主要是用了lambda表达式对list进行了求和求积对于第一个版本为说求和的时候identity的值为0求积的时候它的值为1强烈建议你们自己感受一下identity的变化对整个结果的变化产生什么 的影响改变一下identity的值再运行一下你就有结果了另一个扩展点是 Integer product3 lists.stream().reduce(1, (a, b) - {if (b % 2 0) return a * b; else return a;//这里你可以为所欲为! });System.out.println(list的偶数的积为: product3);//48 小结一下 对于流的缩减操作来说,主要要知道,他只返回一个值,并且它是一个终端操作,然后还有的就是要知道缩减操作的三个约束了,其实最重要的就是无状态性和关联性了.这一小节要说的,也就这么多了,应该很容易就把他收到自己的技能树上面了。
http://www.sadfv.cn/news/416238/

相关文章:

  • 长治市住房保障和城乡建设管理局网站下列关于网站开发中网页
  • 清华紫光做网站wordpress 简约模板
  • 网站建设shwzzz如何建设网站制作平台
  • 建设工程资质证书二维码扫描网站关键词排名推广方法
  • 专线可以做网站软件开发培训学校排名又简单又紧
  • 网站法人与负责人太原seo网络优化招聘网
  • 手机在网上怎么创建自己的网站世界杯32强排名
  • 微信引流神器手机电影网站怎么做施工企业安全总监职责履行情况
  • 广东建站常见网站开发的语言
  • 网页免费建站html动漫网页设计作品及代码
  • 江西省城乡建设培训网官方网站php和django做网站哪个好
  • 网站降权不收录北京和隆优化科技
  • 婚纱摄影网站优化技巧制作网页的素材图片及文字
  • 百度指数官方网站程序员需要考哪些证书
  • 整站seo优化哪家好郑州做网站哪家好熊掌号
  • 阿里巴巴网站建设的目的全国优秀施工企业查询
  • 无锡制作网站楼市最新消息:2023年房价走势
  • synology做网站服务器盐城哪里帮助公司建网址
  • 镇平县建设局网站微信公众号微网站建设
  • 站酷app广安seo优化
  • 莱州网络建站wordpress怎么换语言
  • visual studio网站开发教程商城网站栏目
  • sem搜索老铁seo外链工具
  • 百度云搜索引擎网站wordpress专用主机
  • 鄂州做网站的公司百度一下手机版网页
  • 网站建设教程网站优点
  • 网站建设技术 教材建设银行网站功能介绍
  • 网赢做网站怎么样有美元进账去外管局网站做啥
  • 课工场网站建设培训织梦网站更换域名
  • 百度网站地址提交wordpress线报主题