• Java进阶教程:Streams API


    Java进阶教程:Streams API

    Stream是啥

      首先明确一点,Stream流和IO包里的InputStream、OutputStream是完全不同的概念!它是Java 8 中引入的新特性,Stream可以对集合元素进行各种高效、便利的聚合操作!

      聚合是个什么东东呢?

    聚合在信息科学中是指对有关的数据进行内容挑选、分析、归类,最后分析得到人们想要的结果,主要是指任何能够从数组产生标量值的数据转换过程 [1]  。近年来随着大数据的发展,聚合技术已经广泛地应用于文本分析,信息安全,网络传输等领域。——《百度百科》

      到这里其实我们就理解了,Stream可以对集合中的元素进行筛选,返回我们想要的特定数据

    不是迭代器

      Stream是筛选,既然是筛选,也就是说单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。这个很类似我们迭代器!而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出

      

    创建一个流

      理解了流是什么东西之后!我们要来看一下要怎么创建一个流!

    通过集合创建流

      我们再讲Stream是啥的时候就有说过

    Stream可以对集合元素进行各种高效、便利的聚合操作!

      所以,通过集合创建流是天经地义的!

      Collection<String> collection = Arrays.asList("a","b","c");
      Stream<String> streamOfCollection = collection.stream();

    通过数组创建流

      当然除了集合外,数组也是一种元素集合,也适用于流!

      Integer[] array = new Integer[]{1,2,3,4,5};
      Stream<Integer> streamOfArray = Arrays.stream(array);
    

      除此之外还有数值流、字符流、文件流、管道流等等,例举如下:

            //字符流
            Stream<String> streamOfString = Pattern.compile(", ").splitAsStream("a, b, c");
            //数值流
            IntStream intStream = IntStream.range(1, 3);
            LongStream longStream = LongStream.rangeClosed(1, 3);
            //文件流
            try {
                Path path = Paths.get("C:\file.txt");
                Stream<String> streamOfStrings = Files.lines(path);
                Stream<String> streamWithCharset =
                        Files.lines(path, Charset.forName("UTF-8"));
            } catch (IOException e) {
                e.printStackTrace();
            }
    

      还有很多流,每种流的用法也有很多出于篇幅此处没办法一一列举,JDK文档有详尽说明。

    拿它做什么

      委婉待续

      

    参考资料

    • 待更新
  • 相关阅读:
    快速开发框架:进销存业务注意事项
    延时执行函数:前浪死在沙滩上
    新增筛选方案
    进销存数据库设计:采购订单
    SasS 设计原则十二因素
    四种线程池的解析
    高并发下的流量控制
    Mybatis 缓存机制
    谈谈JVM垃圾回收
    如何使错误日志更加方便地排查问题
  • 原文地址:https://www.cnblogs.com/MrSaver/p/12209149.html
Copyright © 2020-2023  润新知