AICon全球人工智能与机器学习技术大会8折倒计时最后一周,即将涨价>> 了解详情
写点什么

书评:《All About Java 8 Lambdas》

2016 年 6 月 07 日

将这本书命名为《All About Java 8 Lambdas》其实并不公平。实际上,它包含了 Java 8 中新加入特性的大量信息,包括了 lambdas,但是还有很多很多。这本书被描述为“周末读物”,它只有 150 多页,如此简洁的篇幅当然配得上这种叫法。

这本书的内容分为 14 章,可划分为三部分,第一部分介绍了 lambdas,中间一部分介绍了 predicate 和函数式接口类型以及函数式组合,最后一部分专门用来介绍流和流处理,包括并行处理和顺序处理,用到了之前的 lambdas 和函数。这些章节非常完美地组合在一起,它还阐述了 Java 8 中一些其他的特性,如接口中的静态和默认方法以及方法和构造器引用。

这些章节本身都经过深思熟虑并且具有逻辑性,带有样例和代码片段,这些代码可以在本书的GitHub 仓库中获取。实际上,几乎所有的页面上都有示例代码,并且会有文字来阐述这些特定的代码片段是做什么的。

在起始的时候,会为读者展现一些新的语法类型,在概述这一章将会介绍lambdas 的目的并阐述内联lambdas 和方法引用。接下来,会用几章的篇幅剖析样例,更加详细地介绍语法和它们所能应用的特定场景。

该书对函数式编程的介绍是从函数的目的以及 FunctionalInterface注解开始的。然后介绍更为具体的类型,如PredicateConsumerSupplierBiFunction,中间会包含每种类型的样例。尽管作者可以就此收笔,但他同时也展示了如何将函数式的结果链接在一起,并使用它们来构建处理链。

该书在最后的章节介绍了流,包括如何mapflatMap函数以及对集合进行 stream 处理,其中包含原始类型流与其面向对象版本的效率对比。

对流的介绍随后转移到了 optional 类型上,以及它们如何进行 chain/map 操作,同时还介绍了分组操作,该操作允许数据基于特定的数据结构打散并进行 pivot 计算。

最后,讨论了顺序和并行流处理的差异,并给出了一些建议,指出在特定场景下哪种类型的更为合适。

尽管本书声称只讨论 lambdas,但是它涉及了 Java 8 中众多的新特性。它没有讨论到的是一些新的 API,如java.time包,当然本书也没有承诺会介绍这些内容。这本书涉及到了 Java 语言本身所有的语法变更,以及java.util.function包中的新 API。

该书唯一缺失的就是索引。如果你有电子版本的话,这可能算不上什么问题,因为你可以进行全文搜索来查找要引用的内容,但是如果你所购买的是纸质版本的话,那么起始的章节目录就是进行查找的唯一方式了。假如我们能够定位到正确章节的起始点,因为每章都很短再加上内部的标题,所以查找特定的内容相对来讲都很容易。

如果你只有一个周末的时间来了解 Java 8 语言的新特性的话,那么这本书是一个绝佳的开端。

关于作者

Madhusudhan Konda——我是一名 Java 开发人员,目前在伦敦工作,主要服务于投资银行和金融组织。我使用 Java 平台已经超过 15 年了。我开始是 C / C++ 程序员,当我在印度的 IIT Kharagpur 攻读硕士学位时,我快速学习了 Java。从那时我就深爱上了这门语言,并且沿着这条道路一直走到了现在。

查看英文原文: Book Review: All About Java 8 Lambdas

2016 年 6 月 07 日 19:352500

评论

发布
暂无评论
发现更多内容

深入剖析ThreadLocal原理

JFound

Java

一个前端工程师与死神的较量

陈辰

前端工程 压力 医院 生活质量 工程师

游戏夜读 | 写游戏用什么语言?

game1night

分布式系统选主怎么玩

奈学教育

分布式系统

Elastic Stack 系列专辑

HelloTech

elasticsearch Logstash Kibana ELK Elastic Stack

Spring Security 如何将用户数据存入数据库?

江南一点雨

Java spring Spring Cloud Spring Boot spring security

企业数字化转型:用 SpreadJS 打造互通互链的电力系统物联网

Geek_Willie

数字化转型 SpreadJS 电力

为提升网点业务员效率,我们做的事情。

黄大路

商业

Redis6.0 多线程源码分析

代码诗人

redis 源码 技术 线程模型

我的编程之路-4(进阶)

顿晓

进阶 看书 编程之路

Android | Tangram动态页面之路(五)Tangram原理

哈利迪

android

Redis 命令执行过程(下)

程序员历小冰

redis 源码分析

kotlin 200行代码开发一个简化版Guice

陈吉米

Java kotlin guice ioc mynlp

往日之歌

彭宏豪95

职场“潜”规则

俊毅

个人成长 职场 新人 人才培养 能力模型

Java开发架构篇:DDD模型领域层决策规则树服务设计

小傅哥

领域驱动设计 DDD 小傅哥 重构

万字长文带你看懂Mybatis缓存机制

程序员小岑

Java 源码 技术 mybatis

ARTS_20200520

凌轩

Java ARTS 打卡计划

Django的ListView超详细用法(含分页paginate功能)

BigYoung

Python django ListView 分页

竟然有人想看我的「日记」,满足一下大家

非著名程序员

学习 程序人生 提升认知

一个产品最不重要的东西

Neco.W

产品 外包 产品经理

Enhanced Github:一个 GitHub 专用的好插件

非著名程序员

GitHub 程序员 效率工具

关于架构的几件小事:System context

北风

系统架构 系统性思考 架构师 系统上下文 极客大学架构师训练营

敏捷为什么会失败之「PA-SA-WAKA-DA」理论

Worktile

Scrum 敏捷开发 Agile

SQLite是什么

这小胖猫

sqlite 数据库 RDBMS 存储

nginx 概念及上手

HelloZyjS

Spring Security+Spring Data Jpa 强强联手,安全管理只有更简单!

江南一点雨

Java spring Spring Boot spring security

程序员需要了解的硬核知识大全

cxuan

Java c 计算机基础

SpringBoot瘦身

JFound

Spring Boot sprnig

回“疫”录(22):我以为结束了,其实才开始

小天同学

疫情 回忆录 现实纪录 纪实

Java 25周年:MovedByJava之观点

范学雷

Java 架构 编程语言

MySQL 核心特性与优化

MySQL 核心特性与优化

书评:《All About Java 8 Lambdas》-InfoQ