首页 > 其他 > 详细

Stream介绍

时间:2019-09-14 16:41:44      阅读:64      评论:0      收藏:0      [点我收藏+]

在JDK1.8,Collection 接口新增了 stream 方法,用于构建 Stream 对象,从而进行一系列对集合的操作。

  • stream 是一个元素的序列,它支持串行与并行的聚合操作;
  • stream 本身不存储值,它通过管道(AbstractPipeline)的方式获取值;
  • stream 本质是函数式的,对流的操作会生成一个结果,不过并不会修改底层的数据源,集合可以作为流的底层数据源;
  • stream 可以设置延迟查找特性,很多流操作(过滤、映射、排序等)都可以延迟实现;
  • stream 由 数据源、零个或多个中间操作、终止操作 构成
  • stream 的链式操作特性:若最后没有添加终止操作,中间所定义的操作都不会执行;当调用终止操作时,流即会输出结果
  • stream 的特性
    • 流每进行一次中间操作,都会生成一个全新的流;
    • 不能对同一个流进行多次操作,否则会抛出异常;
    • 流的所有中间操作在遇到终止操作时,即会对集合进行遍历,同时将中间操作的内容作用于遍历过程,因此流的操作最终只进行了一次遍历操作

stream 的常用方法

  • map(Function<? super T, ? extends R> mapper):中间操作,对 steam 中的可用元素进行指定的操作
    • mapToInt(ToIntFunction<? super T> mapper):map 方法的原生特化版本,其他还有 mapToDouble 和 mapToLong
  • flatMap(Function<? super T, ? extends Stream<? extends R>> mapper):中间操作,将遍历的集合中的元素转化为 stream,然后将这些 stream 进行汇聚合并
  • filter(Predicate<? super T> predicate):中间操作,用于判断过滤指定元素
  • limit(long maxSize):短路中间操作,用于限定流中元素的个数
  • skip(long n):短路中间操作,用于跳过流中指定个数的元素
  • findFirst():短路终止操作,获取 stream 中第一个参数,返回一个 Optional(由于数据源中元素个数未知)
  • sum():IntStream 中的方法,求和,元素个数为0则返回0
  • min() / max() / ...:IntStream 中的方法,求最大最小值...,返回 OptionalInt

Stream介绍

原文:https://www.cnblogs.com/flying-snake/p/11519332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!