ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Stream介绍

2019-09-14 16:04:37  阅读:219  来源: 互联网

标签:遍历 Stream stream 数据源 元素 介绍 中间 操作


在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,stream,数据源,元素,介绍,中间,操作
来源: https://www.cnblogs.com/flying-snake/p/11519332.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有