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

菏泽企业网站建设wordpress 多人编辑器

菏泽企业网站建设,wordpress 多人编辑器,网站服务器宽带,seoyoonJava 8引入了收集器的概念。 大多数时候#xff0c;我们几乎不使用Collectors类中的工厂方法#xff0c;例如collect(toList()) #xff0c; toSet()或其他更花哨的方法#xff0c;例如counting()或groupingBy() 。 实际上#xff0c;没有多少人真正去研究如何定义和实现收… Java 8引入了收集器的概念。 大多数时候我们几乎不使用Collectors类中的工厂方法例如collect(toList()) toSet()或其他更花哨的方法例如counting()或groupingBy() 。 实际上没有多少人真正去研究如何定义和实现收集器。 让我们从分析CollectorT, A, R真正含义及其工作原理开始。 CollectorT, A, R充当流的“接收器 ” –流将项一个接一个推入收集器最后应产生一些“ 收集 ”值。 在大多数情况下这意味着通过累积元素或将流减少到较小的对象例如 counting()收集器仅计算元素来构建集合如toList() 。 每个收集器都接受类型T项并产生类型R聚合累积值例如R ListT 。 泛型A简单定义了中间可变数据结构的类型在此期间我们将使用它来累积T型项。 类型A可以但不必与R相同-简单来说我们用来从输入StreamT收集项目的可变数据结构可以不同于实际的输出收集/值。 话虽如此每个收集器都必须实现以下方法 interface CollectorT,A,R {SupplierA supplier()BiConsumerA,T acumulator() BinaryOperatorA combiner() FunctionA,R finisher()SetCharacteristics characteristics() } supplier()返回一个函数该函数创建一个累加器实例–可变数据结构我们将使用该函数来累加类型T输入元素。 accumulator()返回一个函数该函数将累加累加器和类型T一项即累加累加器。 combiner()用于将两个累加器合并为一个。 它在并行执行收集器时使用首先拆分输入StreamT并首先独立收集部分。 finisher()使用累加器A并将其转换为类型R的结果值例如collection。 所有这些听起来都非常抽象所以让我们做一个简单的例子。 显然Java 8没有为Guava提供ImmutableSetT的内置收集器。 但是创建一个非常简单。 请记住为了迭代地构建ImmutableSet我们使用ImmutableSet.BuilderT –这将是我们的累加器。 import com.google.common.collect.ImmutableSet;public class ImmutableSetCollectorT implements CollectorT, ImmutableSet.BuilderT, ImmutableSetT {Overridepublic SupplierImmutableSet.BuilderT supplier() {return ImmutableSet::builder;}Overridepublic BiConsumerImmutableSet.BuilderT, T accumulator() {return (builder, t) - builder.add(t);}Overridepublic BinaryOperatorImmutableSet.BuilderT combiner() {return (left, right) - {left.addAll(right.build());return left;};}Overridepublic FunctionImmutableSet.BuilderT, ImmutableSetT finisher() {return ImmutableSet.Builder::build;}Overridepublic SetCharacteristics characteristics() {return EnumSet.of(Characteristics.UNORDERED);} } 首先仔细研究泛型类型。 我们的ImmutableSetCollector接受类型T输入元素因此它适用于任何StreamT 。 最后将产生预期的ImmutableSetT 。 ImmutableSet.BuilderT将成为我们的中间数据结构。 supplier()返回创建新ImmutableSet.BuilderT的函数。 如果您不熟悉Java 8中的lambda则ImmutableSet::builder是() - ImmutableSet.builder()的简写。 accumulator()返回一个函数该函数采用builder和一个T类型的元素。 它只是将上述元素添加到构建器中。 combiner()返回一个函数该函数将接受两个生成器并通过将一个中的所有元素添加到另一个中并返回后者来将它们变成一个。 最后finisher()返回一个函数该函数会将ImmutableSet.BuilderT转换为ImmutableSetT 。 同样这是以下形式的简写语法 builder - builder.build() 。 最后但并非最不重要的一点是 characteristics()告知JDK我们的收集器具有什么功能。 例如如果ImmutableSet.BuilderT是线程安全的不是我们也可以说Characteristics.CONCURRENT 。 现在我们可以使用collect()在所有地方使用自定义收集器 final ImmutableSetInteger set Arrays.asList(1, 2, 3, 4).stream().collect(new ImmutableSetCollector()); 但是创建新实例有点冗长因此我建议创建静态工厂方法类似于JDK所做的 public class ImmutableSetCollectorT implements CollectorT, ImmutableSet.BuilderT, ImmutableSetT {//...public static T CollectorT, ?, ImmutableSetT toImmutableSet() {return new ImmutableSetCollector();} } 从现在开始我们只需键入以下命令即可充分利用我们的自定义收集器 collect(toImmutableSet()) 。 在第二部分中我们将学习如何编写更复杂和有用的收集器。 更新资料 akarazniewicz 指出收藏家只是折叠的冗长实现。 由于我与褶皱之间的爱与恨关系我不得不对此发表评论。 Java 8中的收集器基本上是Scala中最复杂的折叠类型的面向对象封装即GenTraversableOnce.aggregate[B](z: ⇒ B)(seqop: (B, A) ⇒ B, combop: (B, B) ⇒ B): B 。 aggregate()类似于fold() 但是需要额外的combop才能将两个B型累加器组合为一个。 将其与收集器进行比较参数z来自seqop() supplier() seqop()归约运算是一个accumulator()而combop是一个combop combiner() 。 用伪代码可以编写 finisher(seq.aggregate(collector.supplier())(collector.accumulator(), collector.combiner())) GenTraversableOnce.aggregate()在可能同时减少时使用GenTraversableOnce.aggregate()就像收集器一样。 翻译自: https://www.javacodegeeks.com/2014/07/introduction-to-writing-custom-collectors-in-java-8.html
http://www.sadfv.cn/news/109796/

相关文章:

  • 山东华邦建设集团网站手机网站开发技术pdf
  • 网站留言板html模板腾讯公司网页
  • 博创网站建设团队新闻类网站的设计
  • 网站广告的优势十大营销手段
  • 沈阳整站优化页面设置上37cm
  • pc网站运营如何建立自己的网站商城
  • 帮别人做网站的公司是外包吗黄页号码怎么删除掉
  • 安徽法制建设网站网站建设分金手指排名二五
  • 站长之家论坛网站 备案 营业执照
  • 部队内网网站建设方案免费模板简历
  • 长清网站建设电话中国建设银行北京天竺支行网站
  • 深圳宝安大型网站建设厦门网站设计公司找哪家厦门小程序建设
  • 自己做的网站外国人能访问吗免费建立网站的网站吗
  • 设计网站的功能有哪些梦幻西游网页版平民攻略
  • 微信网站是多少钱一年免费设计logo的app
  • 手机的网站建设目标是什么专科网页设计实训报告
  • 网站备案时间怎么查询系统怎么做免费的网站商城
  • 良品铺子网站制作产品网站策划书方案
  • 网站意见反馈源码wordpress 用户验证码
  • 郑州营销型网站制作教程wordpress过滤敏感
  • 服装网站建设物流配送系统h5制作开发哪儿
  • dw 做简单静态网站分类信息发布 wordpress
  • 科讯cms网站管理系统kesioncms网站源码配置数据库在拿
  • 网站维护工作是做啥网络流量统计工具
  • 网站运营岗位介绍宁波网站建设公司哪里有
  • 基层建设是哪个网站的什么是网络营销的技术
  • 域名购买哪个网站最好景安备案域名购买
  • 唐山网站设计公司营销网站找什么公司做
  • 东莞网络销售的网站建设com域名查询
  • 对中国建设银行网站的评价做图赚钱的网站