java8 函数式编程-04-lib 类库
前 3 章讨论了如何编写 Lambda 表达式,接下来将详细阐述另一个重要方面:如何使用Lambda 表达式。
即使不需要编写像 Stream 这样重度使用函数式编程风格的类库,学会如何使用 Lambda 表达式也是非常重要的。
即使一个最简单的应用,也可能会因为代码即数据的函数式编程风格而受益。
Java 8 中的另一个变化是引入了默认方法和接口的静态方法,它改变了人们认识类库的方式...
2020-06-05 09:42:59 |
Java
java8 函数式编程-03-Stream 流
Java 8 中新增的特性旨在帮助程序员写出更好的代码,其中对核心类库的改进是很关键的一部分,也是本章的主要内容。
对核心类库的改进主要包括集合类的 API 和新引入的流(Stream)。
流使程序员得以站在更高的抽象层次上对集合进行操作。本章会介绍 Stream 类中的一组方法,每个方法都对应集合上的一种操作。
3.1 从外部迭代到内部迭代
Java 程序员在使用集合类时,一个通用...
2020-06-05 09:42:59 |
Java
java8 函数式编程-02-Lambda 表达式
Java 8 的最大变化是引入了 Lambda 表达式——一种紧凑的、传递行为的方式。
它也是本书后续章节所述内容的基础,因此,接下来就了解一下什么是 Lambda 表达式。
2.1 第一个Lambda表达式
Swing 是一个与平台无关的 Java 类库,用来编写图形用户界面(GUI)。
该类库有一个常见用法:为了响应用户操作,需要注册一个事件监听器。
用户一输入,监听器就会执行...
2020-06-05 09:42:59 |
Java
java8 函数式编程-01-介绍
在开始探索 Lambda 表达式之前,首先我们要知道它因何而生。
本章将介绍 Lambda 表达式产生的原因,以及本书的写作动机和组织结构。
1.1 为什么需要再次修改Java
1996 年 1 月,Java 1.0 发布,此后计算机编程领域发生了翻天覆地的变化。
商业发展需要更复杂的应用,大多数程序都跑在功能强大的多核 CPU 的机器上。
带有高效运行时编译器的 Java 虚拟机...
2020-06-05 09:42:59 |
Java
java8 函数式编程-00-概览
序言
多年以来,函数式编程被认为是少数人的游戏,这些人总是强调自己在智力上的优越性,认为函数式编程的智慧不适合推广给普罗大众。
写作此书的目的就是为了挑战这种思想,函数式编程并没有多么了不起,也绝不是少数人的游戏。
在过去的两年中,我请伦敦 Java 社区的开发人员以各种方式测试 Java 8 的新特性。
我发现很多人都喜欢 Java 8 的新用法和类库。
他们有可能被一些术语和高...
2020-06-05 09:42:59 |
Java
函数式编程-03-让 java 更加函数式
3.1 使标准控制结构具有函数式风格
控制结构是命令式编程的主要组成部分。命令式的 Java 程序员都不会相信无须使用 if···else switch .. ·case for, while do 循环即可编写程序。这些结构是命令式编程的本质。但在接下来的章节中,你将学习如何编写绝对没有控制结构的函数式程序。在本节中,你不会那么激进一一我们只关注以更加函数式的风格来使用传统的控制结构。
...
2020-06-05 09:42:59 |
Pattern
函数式编程-02-函数中的方法
Java 中的函数
在第1 章中,你用了我称之为函数的东西,但实际上它们是方法。
方法是一种在传统的Java 里在某种程度上表示函数的方式。
函数式的方法
一个方法可以是函数式的,只要它满足纯函数的要求:
它不能修改函数外的任何东西。外部观测不到内部的任何变化。
它不能修改自己的参数。
它不能抛出错误或异常。
...
2020-06-05 09:42:59 |
Pattern
函数式编程-02-java 中的函数式接口和 lambda 简介
Java 8 的函数式接口
lambda 被用于接收特定接口的地方, Java 正是以此来决定调用哪个方法的。
Java 并不对命名加以限制,有些语言则不然。
唯一的限制是所用的接口必须要明确,这通常意味着它应该有且仅有一个抽象方法。(实际上会更复杂一些,因为有些方法不算在内。)
这样的接口就是SAM (single abstract method, 单一抽象方法)类型,被称为函数式...
2020-06-05 09:42:59 |
Pattern