上次出现…我写了一篇与JDK8为我们提供的新方法有关的文章。 最令我兴奋的功能是lambda。 我必须承认,在即将成为浪子的第一年(在此期间,我使用C#开发了该产品),我喜欢LINQ和它可以做的漂亮,优雅的事情。 现在,即使擦除仍然在我们上次离开的地方,现在我们有了更好的过滤,更改,遍历集合以及语法糖旁边的方法,这也可能使您正确使用四核处理器你向朋友吹牛。 在谈论朋友时,这篇文章是与lambda和流处理相关的术语摘要,当他们问您:“ <DKD 8中与lambdas相关的那个地名>是什么? 我无意提供完整列表或lambda指南,如果我说错了什么或错过了什么,请告诉我...

功能界面:

根据[jls 8],功能接口是仅具有一个抽象方法的接口,因此表示单个功能协定(在某些情况下,此“单个”方法可以采用具有等效等效签名的多个抽象方法的形式( [jls7_8.4.2])从超级接口继承;在这种情况下,继承的方法在逻辑上表示单个方法。

@FunctionalInterface –用于指示接口应为功能接口。 如果注释放置在实际上不是的接口上,则会发生编译时错误。

例如:

interface Runnable { void run(); }

Runnable接口是一个非常合适的示例,因为当前存在的唯一方法是run方法。 功能接口的另一个Java“经典”示例是Comparator <T>接口,在下面的示例中是前面提到的接口,并且equals方法继承自Object ,该接口仍然起作用,因为compare方法是唯一的抽象方法,而equals继承自超类。

interface Comparator<T> {boolean equals(Object obj);int compare(T o1, T o2);}

–根据[牛津词典],在计算中是连续的数据或指令流,通常具有恒定或可预测的速率。
从JDK 8 开始,代表一种机制,用于通过计算管道从数据源传送元素。 流可以用作数组,集合,生成器功能,I / O通道的数据源。 获取流:

  • Collection通过stream()和/或parallelStream()方法;
  • 通过Arrays.stream(Object[])从数组
  • 从流类的静态工厂方法开始,例如Stream.of(Object[])IntStream.range(int, int)Stream.iterate(Object, UnaryOperator)
  • 可以从BufferedReader.lines();获得文件的行BufferedReader.lines();
  • 可以从Files中的方法获取文件路径流。
  • 可以从Random.ints();获得随机流Random.ints();
  • JDK中的许多其他流承载方法, including BitSet.stream()Pattern.splitAsStream(java.lang.CharSequence)JarFile.stream()

流操作对流执行的操作。 从流操作的角度来看,有两种类型的操作:中间操作和终端操作

流中间操作 –缩小流内容的操作。 中间操作本质上是惰性的–实际不更改流的内容,而是创建另一个更窄的流。 仅在调用终端操作时才开始流的遍历。

  • filter –根据提供的谓词过滤流
  • map –通过将映射函数应用于初始流中的每个元素来创建新流(每种数字类型的对应方法:int,long,double)
  • flatMap –一种操作,其作用是对流的元素进行一对多转换,然后将结果元素展平为新的流。 例如,如果订单是采购订单流,并且每个采购订单都包含一个订单项集合,则以下内容将生成一个订单项流:
orderStream.flatMap(order -> order.getLineItems().stream())
  • 与众不同–返回不同的操作流
  • 已排序–返回已排序操作流
  • peek –调试专用的方法,该方法返回由该流元素组成的流,所提供的操作在每个元素上执行

例如:

list.stream().filter(filteringFunction).peek(e -> {System.out.println("Filtered value: " + e); });.map(mappingFunction).peek(e -> {System.out.println("Mapped value: " + e); });.collect(Collectors.intoList());
  • limit –返回当前流的截断版本(不超过元素的限制数量)
  • substream –返回一个由剩余元素组成的流,该元素从起始位置开始,或者在startPosition和endPosition之间

流终端操作 –遍历流以产生结果或副作用。 执行完终端操作后,该流被视为已消耗(在已消耗的流上调用另一个操作将抛出IllegalStateException )。 终端操作本质上是急切的,除了iterator()splititerator()为那些在API中找不到所需功能的人提供了扩展机制。

  • forEach –将提供的操作应用于流的每个元素。 也存在forEachOrdered版本
  • toArray –将流的元素提取到数组中
  • 减少–减少方法
  • 收集-可变还原法
  • min –计算流的最小值
  • max –计算流的最大值
  • count –计算流中的元素
  • anyMatch –如果存在与提供的条件匹配的元素,则返回true
  • allMatch –如果所有元素都匹配,则返回true
  • noneMatch –如果所有元素都不匹配,则返回true
  • findFirst –查找与提供的条件匹配的第一个元素
  • findAny –返回流中的元素

流管道 :由一个源,随后的零个或多个中间操作和一个终端操作组成。

分离器 –用于遍历和分配源元素的分离器。 可以将其用于遍历,估计元素数量或将其拆分为多个拆分器

归约 –归约运算(或折叠)采用一系列输入元素,并通过重复应用组合运算将它们组合成单个汇总结果。 归约运算可以是计算总和,最大值,最小值,计数或收集列表中的元素。 简化操作也可以并行化,只要所使用的函数是关联的且无状态的即可。 用于减少的方法是reduce()

例如:使用和减少:

int sum = numbers.stream().reduce(0, (x,y) -> x + y);

要么

int sum = numbers.stream().reduce(0, Integer::sum);

可变归约 –是一种在处理流中的元素时将输入元素累积到可变结果容器(StringBuilder或Collection)中的操作。

例如:

String concatenated = strings.reduce("", String::concat)

谓词 –确定输入对象是否符合某些条件的功能接口

我希望这个精简的列表对您有所帮助,并且在您需要在一页上使用所有这些术语的时候将其保留在书签中。

如果您发现缺少的东西,请告诉我,以便纠正。

所以……我希望您有个不错的降临时间,并祝您生日快乐/快乐/快乐,但最重要的是,祝您圣诞节平安!

参考: 关于JDK8的lambda的会话指南– Java出现日历博客上来自JCG合作伙伴 Attila Mihaly Balazs 的术语表 。

翻译自: https://www.javacodegeeks.com/2013/12/a-conversational-guide-for-jdk8s-lambdas-a-glossary-of-terms.html

JDK8 lambda的会话指南–术语表相关推荐

  1. jdk8lambda_JDK8 lambda的会话指南–术语表

    jdk8lambda 上次出现-我写了一篇与JDK8为我们提供的新方法有关的文章. 最令我兴奋的功能是lambda. 我必须承认,在即将成为浪子的第一年(在此期间,我使用C#进行了开发),我喜欢LIN ...

  2. Google发布机器学习术语表 (中英对照)

    来源 | TensorFlow Google 工程教育团队已经发布了多语种的 Google 机器学习术语表,该术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义.语言版本包括西班 ...

  3. 干货丨谷歌最新机器学习术语表

    作者:思颖     来源:雷锋网 日前,谷歌发布机器学习术语表,以下术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义. A A/B 测试 (A/B testing) 一种统计方 ...

  4. Google 机器学习术语表

    原文:Google机器学习术语表 机器学习术语表 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义. A A/B 测试 (A/B testing) 一种统计方法,用于将两种或 ...

  5. 汇总: 机器学习术语表

    来源:https://developers.google.cn/machine-learning/glossary/?hl=zh-CN (中文) https://developers.google.c ...

  6. 【官网文档】机器学习术语表

    https://developers.google.cn/machine-learning/glossary/ 本术语表中列出了一般的机器学习术语和 TensorFlow 专用术语的定义. A A/B ...

  7. git clone 一部分_Git/GitHub 中文术语表 | Linux 中国

    我们根据 GitHub 等文档,收集整理了部分常用的 Git 和 GitHub 中的术语的中文定名及其解释.作者:硬核老王 Git 和 GitHub 已经成为了开发者的基础工具,尤其是参与开源软件开发 ...

  8. 【转】SharePoint 术语表

    术语表 术语 定义 访问控制条目  安全对象的自由访问控制列表 (DACL) 或对象的系统访问控制列表 (SACL) 中的一项.在 DACL 中,该项向用户或组授予权限或者拒绝向用户或组授予权限.在 ...

  9. TensorFlow官方文档术语表

    2019独角兽企业重金招聘Python工程师标准>>> 术语表 艾伯特(http://www.aibbt.com/)国内第一家人工智能门户 广播操作(Broadcasting ope ...

最新文章

  1. pandas删除dataframe中行内容全是0的数据行(remove rows with all zeros in dataframe)
  2. 构建高性能J2EE应用的五种核心策略
  3. 【论文解读】图像超分最新记录!南洋理工提出图神经网络嵌入新思路,复原效果惊艳...
  4. 二十三、前端必学Node.js入门
  5. Jenkins实现Android自动化打包
  6. ci Call to undefined function site_url()
  7. linux编码 form表单,Linux以form表单形式上传文件讲解
  8. 如何在React Native中使用Redux Saga监视网络更改
  9. Configuration Manager 纯模式所需的 PKI 证书的分步部署示例
  10. TypeError: Unexpected keyword argument passed to optimizer: learning_rate解决方法
  11. 【Spring.net点滴】
  12. react 类暴露_react如何将组件内部的方法暴露给外部
  13. python实现目录中制定内容查找
  14. Dijkstra算法图解
  15. CREO学习笔记【常见表面处理工艺】
  16. 色彩设计原理(里面有配色方案,也有配色网站)
  17. 躺平国历险记:两个超平面之间距离的计算
  18. 摄影基础知识: 曝光补偿完全指南
  19. oracle lob类型和mysql text_OracleLob类型存储浅析
  20. 运动健身人群画像洞察报告.pdf

热门文章

  1. 量子计算机对人类长寿,科学家称“极端长寿”在未来几十年可能会达到新的里程碑...
  2. apache ranger_Apache Ranger插件的美丽简洁
  3. netflix 模式创新_创新设计模式:单例模式
  4. 设计模式装饰者模式_装饰者模式如何拯救了我的一天
  5. input发送a.jax_JAX-RS 2.0:服务器端处理管道
  6. hazelcast_Hazelcast的MapLoader陷阱
  7. Spring Boot微服务,Docker和Kubernetes研讨会–第3部分
  8. javafx canvas_JavaFX技巧1:可调整大小的Canvas
  9. JDK 13:什么是AggressiveOpts?
  10. github上java项目_GitHub上10,000个最受欢迎的Java项目-以下是他们使用的顶级库