java lambda::
关于Java 8 Lambdas的所有标题并不能说明问题。 实际上,它包含有关Java 8中已添加的新功能的大量信息,其中包括lambda,但还有很多更多信息。 这本书被描述为“周末读物”,略超过150页肯定足够精巧。
本书的内容分为14章,前三章涵盖lambda。 中间三分之一着眼于谓词以及功能接口类型和功能组成。 剩下的三分之一专用于流和流处理,包括并行和顺序处理,使用到目前为止看到的lambda和函数。 这些章节在一起很好地融合在一起,并且还展示了Java 8的其他一些功能,例如接口上的静态和默认方法以及方法和构造函数引用。
这些章节本身经过了深思熟虑且合乎逻辑,并与支持本书GitHub存储库的示例和代码片段相互交错 。 实际上,几乎所有页面上至少都有一些代码示例,而周围的文字说明了该特定代码段的功能。
从一开始,读者就会接触到某些类型的新语法。 介绍性章节说明了lambda的用途,并演示了内联lambda和方法参考。 然后,在接下来的几章中,将使用更精确的语法和可能适用的特殊情况对示例进行剖析。
本书对函数式编程的介绍从对函数的用途和FunctionalInterface
批注的介绍开始。 然后,它介绍了更具体的类型,例如Predicate
, Consumer
, Supplier
和BiFunction
,以及每种类型的示例。 尽管作者可以在这里停下来,但是他继续前进,并展示了如何将功能结果链接在一起,并使用它们来构建处理链。
本书将他们移到了最后一部分,涵盖了流,包括如何将map
和flatMap
函数和过程map
到流的集合上,包括如何将原始类型的有效流与其面向对象的朋友进行比较。
然后,流的覆盖范围变为可选类型,以及如何对其进行链接/映射以及分组操作,这些操作允许根据特定的所需数据结构剪切和旋转数据流。
最后,对顺序处理流和并行处理流之间的差异进行了一些讨论,并提供了有关此处理适合或以其他方式进行处理的一些建议。
尽管这本书声称只是谈论lambda,但它涵盖了Java 8的许多新功能。它没有谈论的是一些新的API,例如java.time
包; 但这在书中没有承诺或提供。 但是,本书确实涵盖了Java语言的所有语法更改,以及java.util.function
软件包中的新API。
本书唯一缺少的是索引。 如果您有电子副本,则可能不那么相关,因为您可以搜索查找所需的参考文献。 但是,如果您要购买纸质副本,那么开头的章节索引是您会发现的唯一交叉引用。 幸运的是,各章足够短,只要您可以找到本章的正确起点,内部标题就可以在您需要查找内容时相对容易地进行查找。
如果您只有一个周末来学习Java 8语言的新功能,那么本周末的阅读是一个很好的开始。
java lambda::