Stream
- 流由三部分构成,源–零个或多个中间操作–终止操作
- 流操作的分类:
|—惰性求值 只有终止操作调用时才执行。
|—及早求值 reduce或终止操作。 - 流创建的方式
|—Stream.of();
|—Stream.of(数组);
|—Arrays.stream(集合);
|—Collection.stream;
|—Stream.generate();
|—Stream.empty();
|—Stream.iterate().limit(); - 流不存储值,通过管道的方式获取值。
- 本质是函数式的,对流的操作会生成一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源。
- 流的所有方法基本都是高阶函数,即都需要传入函数作为参数。
- stream被使用或被关闭就不能再次被使用,否则会报异常。
- 流关注计算,集合关注存储
- 流与迭代器类似的一点是,无法重复消费。
Collectors分区分组
- group by
- partition by
分区是特殊的分组,只有true和false两种。