开始读书吧
一共10节,因为每一节之间并没有太大联系
46条 优先选择Stream中无副作用的函数
Stream并不只是一个API,而是一种函数式的编程模型,可以带来编码的描述性、速度以及并行性.Stream范型最重的是把计算构造成一系列变型,每一级结果都尽可能的靠近上一级结果的纯函数(纯函数的结果只取决于函数本身,不依赖于任何可变的状态,也不更新任何状态),因此传入Stream的函数对象不必须是无副作用的.
Stream的终止操作中,forEach是最没有威力的,它是显示迭代因而不适合并行操作.forEach操作应该仅用于展示Stream的计算结果,而不是执行计算.但是可以使用forEach将Stream的计算结果添加到之前已经存在的集合中.
collector收集器:
- 有三个这样的收集器(将Stream中的元素收集到一个真正的集合中):toList()/toSet/toCollection(collectionFactory),这几个方法都是final类Collector中的静态方法
- 另外可能会用到的比较器实例可以通过Comparator的静态方法comparing(Function)来创建使用
- 映射收集器toMap(Function, Function)