【Lambda】之 流(stream)

流(stream)

在类库中议添加新的 流java.util.stream.Stream 以便进行聚集(aggregation)操作

其中,Stream<T> 代表对象引用,此外还有一系列特化(specialization)流,比如IntStream代表整形数字流

流的操作可以被组合成 流水线(pipeline)

例如:

shapes.stream()
      .filter(s -> s.getColor() == BLUE)
      .forEach(s -> s.setColor(RED));

Collection 上调用 stream() 会生成该集合元素的流视图(stream view);
filter() 过滤,产生只包含蓝色的流;
forEach() 遍历,并操作设置为红色。

流水线既可以串行执行也可以并行执行,并行或串行是流的属性。
除非显示要求使用并行流,否则JDK总会返回串行流。(串行流可以通过parallel()方法被转化为并行流)

流的特性有两个 :

  1. 惰性
  2. 缓存


(1)惰性

Stream具有天然的惰性——仅按需生产。

即,它就好比一个无限序列,只有在你要求的时候才会生产值,且值生产只要求的值。

暗含意思:“我可以给你是所有想要的东西!!”



(2)缓存

流的另外一个特性:它们记住(memoize)它们已经生成的值。

其实就是:缓存啦~~~ 哈哈哈!!

当流按需产生了一个新值时,它将会在返回该值之间缓存它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值