1. Java 8的Stream遵循”做什么,而不是怎么去做“的原则。
2. 使用Stream的典型工作流程:创建一个Stream->指定初始流转换或其他流的中间操作->应用终止操作产生结果。
3. 可以使用Collection接口的stream方法将任何集合转化为Stream。如果面对一个数组,使用静态方法Stream.of(),Stream.empty()可以产生空的Stream。
4. Stream.generate()和Stream.iterator()可以产生无限Stream。
5. 常见归约函数有:count,min,max,findFirst,findAny,anyMatch,allMatch,noneMatch。他们返回Optional<T>类型。
6. 使用Optional类型的关键在于:使用一个“要么如果值不存在就产生另一个替代者,要么如果值存在就是用该值”的方法
7. 如果你不能正确掌握实用Optional类型值,那么你无法从超越”对象存在或为null”的这种方式中获益。
8. 使用Optional.of() 和 Optional.empty()来创建Optional对象,Optional.ofNullable(obj)方法被设计为null和可选值之间的一座桥梁:如果obj不为null则返回Optional.of(obj)否则返回Optional.empty()
9. flatMap通过展开方法所返回的流,将两个方法组合起来。
10. 收集结果可以用forEach forEachOrdered来访问每一个结果。收集到数据结构中庸toArray() toArray(String::new),收集到容器用collect。