c. lambda表达式
c. lambda表达式
更新日期:2021-01-11
1. 概述
lambda表达式是Java8中引入的新特性,用来实现函数式编程。 lambda为了简化代码增强可读性而生,但是因为使用的人不多,且使用的不规范,反而造成了代码可读性变差并难以维护。
使用简单的功能,写出简单的lambda表达式会是明智的选择。
2. Stream
Stream类是lambda表示式的核心,是必须要掌握的。
先看看如果获取一个Stream对象。
获取Stream对象
1 2 3 4 5 6 7 8 9 10 11 | |
再来看看使用Stream可以进行的操作。(有一部分看起来很难使用的不包含在内)
| No. | 函数 | 说明 |
|---|---|---|
| 1 | allMatch、anyMatch、noneMatch | 判断流中的元素是否满足指定的条件 |
| 2 | collect | 进行集约处理,常用来最后一步返回List或数组之类的结果 |
| 3 | concat | 串联两个流 |
| 4 | count | 统计流中元素的数量。比如一顿筛选之后统计数量 |
| 5 | distinct | 去除重复元素 |
| 6 | filter | 筛选元素 |
| 7 | findAny、findFirst | 返回元素 |
| 8 | flatMap系列 | 映射元素到另一种类型(很少使用) |
| 9 | map系列 | 映射元素到另一种类型 |
| 10 | forEach系列 | 遍历元素 |
| 11 | limit | 为流指定最大元素个数的限制 |
| 12 | max、min | 最大值、最小值 |
| 13 | of | 从一系列值生成Stream对象 |
| 14 | skip | 跳过前n个元素 |
| 15 | sorted | 排序 |
| 16 | toArray | 将结果转换成数组 |
这些操作的作用都是显而易见的。不太容易掌握的是结果的使用方法。
结果转换
1 2 3 4 5 6 7 8 9 10 11 12 | |
最后,记住要书写简单的lambda表达式。再有多个操作时每个操作要单独放一行,这样更容易阅读。
具有多个操作的lambda表达式
1 2 3 4 5 6 7 | |