Java 8 之Stream 生成姿势

Stream 的定义

  • 支持顺序和并行聚合操作的元素序列
  • 可以由数组、集合以及文件转换而成
  • Stream 消费完之后便没有了,就想流水一样
  • 生成流的“源”是一个不会在操作流的过程中改变

生成流的"姿势"

  • 数组生成流
Integer[] arr = {1, 2, 3, 4, 6};//这里可以开成int[] 试试看看结果。。。①
        Stream.of(arr)//生成流Stream<Integer>
                .forEach(System.out::println);//打印流中的每个元素
  • 集合(list)生成流,Collection 接口已经添加了stream 方法,即所有实现改接口的都可以生成流
Arrays.asList(1, 2, 3, 4)//返回list集合
                .stream()//转换为Stream<Integer>
                .forEach(System.out::println);
  • 读文件生成流
Files.lines(Paths.get("E:\\temp\\test.txt"))
                .forEach(System.out::println);
  • Stream 自带生成无限流, Stream 类中的有两个静态方法来生成无限流
    • 方法签名:public static<T> Stream<T> generate(Supplier<T> s);Supplier<T> 是一个函数式接口,主要作用生产流中的元素
Stream.generate(() -> 1)
                .limit(5)// 
                .forEach(System.out::println);
  • 方法签名:public static<T> Stream<T> iterate(final T seed, final UnaryOperator<T> f);seed 就是初始值,UnaryOperator<T> 操作传进来的参数 返回和参数相同的类型
Stream.iterate(5, i -> i + 1)//生成无线流
                .limit(5)//使用limit 截断流 这里取前5个,类比sql 的limit
                .forEach(System.out::println);

上面两个方法都是生成无限流,下面来讲两个个生成有限流的

  • LongStream和IntStream的range()和rangeClosed() 方法,两个方法的参数都是一样:起始值和结束值,类型都是long或者int, 这两个方法的区别是:range方法是不包括结束值,rangeClosed是包含结束值的。
@Test
    public void streamRanged() {
        IntStream.range(1, 2)
                .forEach(System.out::println);
    }

结果:

 1
    @Test
    public void streamRangeClosed() {
        IntStream.rangeClosed(1, 2)
                .forEach(System.out::println);
    }

结果:

1
2

大家欢迎指正批评
代码地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,124评论 19 139
  • 转自: Java 8 中的 Streams API 详解 为什么需要 Stream Stream 作为 Java ...
    普度众生的面瘫青年阅读 7,946评论 0 11
  • 第一章 为什么要关心Java 8 使用Stream库来选择最佳低级执行机制可以避免使用Synchronized(同...
    谢随安阅读 5,364评论 0 4
  • 一、前言   在目前用到的JDK8的功能当中,毫无疑问Stream的使用是最多的,所以通过这篇文章来学习总结一下。...
    骑着乌龟去看海阅读 6,397评论 1 7
  • 在克里特挖掘着古老 这大地封存着公元前的美好 那满是橄榄的绿色巴尔干岛 城邦的石墙在这里生长和摔倒 熟透的葡萄有远...
    北岸缥缃阅读 3,251评论 0 1

友情链接更多精彩内容