Java8提供的Stream API,将对数据流的所有操作,仅用三个步骤概括全了-过滤、转化、归约。其中,过滤、转化还比较容易理解,但是归约就是一个非常高级的抽象接口了,这篇博客从一个简单的累加例子出发,管中窥豹,带你彻底理解归约器。
何谓归约
归约,就是对中间操作(过滤,转换等)的结果进行收集归一化的步骤,当然也可以对归约结果进行再归约,这就是归约的嵌套了。中间操作不消耗流,归约会消耗流,而且只能消费一次,就像......把流都吃掉了。对于刚接触Stream API的人来说,这样的描述可能太抽象了,请看下面的例子
public class TestStream { public static void main(String[] args) { List<Integer> numbers = Arrays.asList(-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9);