java布道者耗尽20年的功力整理完结java实战第2版文档( 二 )


第1章总结Java的主要变化(Lambda表达式、方法引用、流和默认方法) , 为学习后面的内容做准备 。
本章内容

  • Java怎么又变了
  • 日新月异的计算应用背景
  • Java改进的压力
  • Java 8和Java 9的核心新特性

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第2章介绍行为参数化 , 这是Java 8非常依赖的一种软件开发模式 , 也是引入Lambda表达式的主要原因 。
本章内容
  • 应对不断变化的需求
  • 行为参数化
  • 匿名类
  • Lambda表达式预览
  • 真实示例:Comparator、Runnable和GUI

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第3章对Lambda表达式和方法引用进行全面介绍 , 每一步都提供了代码示例和测验 。
本章内容
  • Lambda管中窥豹
  • 在哪里以及如何使用Lambda
  • 环绕执行模式
  • 函数式接口 , 类型推断
  • 方法引用
  • Lambda复合

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第二部分详细讨论新的Stream API 。 通过Stream API , 你将能够写出功能强大的代码 , 以声明性方式处理数据 。 学完这一部分 , 你将充分理解流是什么 , 以及如何在Java应用程序中使用它们来简洁而高效地处理数据集 。
第4章介绍流的概念 , 并解释它们与集合有何异同 。
本章内容
  • 什么是流
  • 集合与流
  • 内部迭代与外部迭代
  • 中间操作与终端操作

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第5章详细讨论为了表达复杂的数据处理查询可以使用的流操作 。 其间会谈到很多模式 , 如筛选、切片、查找、匹配、映射和归约 。
本章内容
  • 筛选、切片和映射
  • 查找、匹配和归约
  • 使用数值范围等数值流
  • 从多个源创建流
  • 无限流

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第6章介绍收集器——Stream API的一个功能 , 可以让你表达更为复杂的数据处理查询 。
本章内容
  • 用Collectors类创建和使用收集器
  • 将数据流归约为一个值
  • 汇总:归约的特殊情况
  • 数据分组和分区
  • 开发你的自定义收集器

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第7章探讨流如何得以自动并行执行 , 并利用多核架构的优势 。 此外 , 你还会学到为正确而高效地使用并行流 , 要避免的若干陷阱 。
本章内容
  • 用并行流并行处理数据
  • 并行流的性能分析
  • 分支/合并框架
  • 使用Spliterator分割流

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第三部分探索Java 8和Java 9的多个主题 , 这些主题中的技巧能让你的Java代码更高效 , 并能帮助你利用现代的编程习语改进代码库 。 这一部分的出发点是介绍高级编程思想 , 本书后续内容并不依赖于此 。
第8章是这一版新增的 , 作为Java程序员 , 如果你不知道或者没有使用过Collection API , 就太孤陋寡闻了 。 几乎每一个Java应用都或多或少会用到Collection 。 通过前面章节的学习 , 你已经看到将Collection API和Stream API结合起来构造数据处理查询有多强大 。 不过 , Collection API也存在种种不尽如人意的地方 , 使其使用起来比较烦琐 , 很多时候还容易出错 。
通过本章 , 你会了解Java 8和Java 9中Collection API的新特性 , 这些特性能让你的编程工作事半功倍 。 首先 , 我们会介绍Java 9新引入的集合工厂 , 它可以极大地简化创建小规模List、Set以及Map的流程 。 接下来会介绍如何使用Java 8的增强功能 , 移除或者替换List和Set中的元素 。 最后会学习处理Map的一些新方法
本章内容
  • 如何使用集合工厂
  • 学习使用新的惯用模式处理List和Set
  • 学习通过惯用模式处理Map

java布道者耗尽20年的功力整理完结java实战第2版文档文章插图
第9章探讨如何利用Java 8的新功能和一些秘诀来改善你现有的代码 。 此外 , 该章还探讨了一些重要的软件开发技术 , 如设计模式、重构、测试和调试 。
通过本文的前八章 , 我们了解了Lambda和Stream API的强大威力 。 你可能主要在新项目的代码中使用这些特性 。 如果你创建的是全新的Java项目 , 这是极好的时机 , 你可以轻装上阵 , 迅速地将新特性应用到项目中 。 然而不幸的是 , 大多数情况下你没有机会从头开始一个全新的项目 。 很多时候 , 你不得不面对的是用老版Java接口编写的遗留代码 。