当前位置: 首页 > 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.yutouwan.com/news/109796/

相关文章:

  • 可以加外链的网站软件项目外包网
  • 改图网站企业网站推广的线上渠道有哪些
  • 建一个私人彩票网站做一个app上架需要多少费用
  • 百度最怕哪个投诉电话太原企业网站seo
  • 长春营销型网站制作开源oa系统
  • 能用网站做微信小程序郑州seo技术顾问
  • 网站建设推广注册公司wordpress参考文件
  • 网站 做 app开发wordpress 插件下载站
  • 营销网站建设哪里好薇电子商务课程视频
  • 网站设计 西安wordpress账号图片尺寸
  • 网站建设长尾关键词iis部署网站 asp 物理路径
  • 黄冈便宜的网站推广怎么做做网站用什么编程软件
  • 免版权费自建网站Wordpress转jekyll
  • 做租凭网站是经营性吗系统开发外包
  • 邯郸网站制如何自己做公司网页
  • jsp网站开发可行性分析c 做网站后端
  • 手机创建自己网站瀑布流响应式网站模板
  • 网站排名忽然不见了菜鸟制作个人网站网页实例
  • 博罗建设银行网站king wordpress theme
  • 福州闽侯网站建设用例图在线制作网站
  • 工作室网站免费建设快三网站建设
  • 北京未来科技城开发建设有限公司 网站wordpress大负载
  • 建设学校网站的意义市场营销策划案的范文
  • 各大网站的404文山知名网站建设哪家好
  • 个人建网站怎么赚钱wordpress无法创建
  • 怎样设计自己网站域名网站建设银行
  • 胶东网站建设没有地址可以注册公司吗?
  • 化工企业网站模板合肥网站建设步骤
  • 做网站对于不同的分辨率asp网站建设实录pdf
  • 做粥哪个美食网站好学校网站的建设目标是什么