Stream
- 高级迭代器 Pipeline
- 内部迭代 外部迭代
外部迭代 for 串行
内部迭代 stream ,sum() 隐式 可用并行流 惰性 短路操作 - 惰性求值 中间操作(返回流) 终止操作
惰性求值 调用终止操作前 中间操作不会执行
Stream 的创建
Stream 中间操作
intStream longStream 非Stream子类 需要boxed装箱 flatMap(s -> s.chars.boxed()) 拆箱.intValue
Stream 终止操作
Stream 并行流
parallel()
sequential()以最后为准
ForkJoinPool.commonPool 默认cpu数量 公用可能阻塞
java.util.concurrent.ForkJoinPool.common.parallelism
自定义 new ForkJoinPool(num);
pool.submit(()->{…});
pool.shutdown();
Stream 收集器
.collect(Collectors.toList())
.toCollection(TreeSet::new)
汇总.summarizingInt()
分块 .partitioningBy() 2块
分组.groupingBy()
Stream 运行机制
链式调用,一个元素只迭代一次
每一个中间操作返回一个新的流 流的sourceStage指向同一处head->nextStage-nextStage
无状态被 有状态操作截断
并行情况下 有状态不一定并行
parallel/sequetial也是中间操作 不创建流只修改head的并行标志