3.1 流是什么
(1)代码是以声明性方式写的,说明想要完成什么,而不是说明如何实现一个操作(if条件控制语句)
(2)你可以把几个基础操作连接起来,来表达复杂的数据处理流水线(在filter后加上sorted,map,collect操作,如图4-1所示),同时保持代码清晰可见。
总结一下,Java8中的Stream可以让你写出这样的代码
(1)声明性—更简洁,更易读
(2)可复合–更灵活
(3)可并行----性能更好
在本章剩下的部分和下一章中,我们会使用这样一个例子:一个menu,它只是一张菜肴列表。
package com.java.lamdba.third;
/**
* 菜肴
*/
public class Dish {
private final String name;
private final boolean vegetarian;
private final int calories;
private final Type type;
public Dish(String name, boolean vegetarian, int calories, Type type) {
this.name = name;
this.vegetarian = vegetarian;
this.calories = calories;
this.type = type;
}
public enum Type { MEAT, FISH, OTHER }
}
3.2 流简介
3.3流与集合
3.3.1 只能遍历一次
如果再遍历,则会抛出异常,所以记住,流只能消费一次
3.3.2 外部迭代与内部迭代
3.4 流操作
3.4.1 中间操作
3.4.2 终端操作
3.4.3 使用流