• Java Stream


    Stream

    Java8新增了Stream的概念
    Stream是对集合对象(Collections)功能的增强,她专注于对集合对象的进行各种便利、高效的操作,或者大批量数据操作。
    Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,
    并发模式能够充分利用多核处理器的优势,使用 fork
    /join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错,
    但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。
    什么是流
    

    Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出需要对其包含的元素执行什么操作,比如 “过滤掉长度大于 10 的字符串”、“获取每个字符串的首字母”等,Stream 会隐式地在内部进行遍历,做出相应的数据转换。

    Stream 就如同一个迭代器(Iterator),单向,不可往复,数据只能遍历一次,遍历过一次后即用尽了,就好比流水从面前流过,一去不复返。

    而和迭代器又不同的是,Stream 可以并行化操作,迭代器只能命令式地、串行化操作。顾名思义,当使用串行方式去遍历时,每个 item 读完后再读下一个 item。而使用并行去遍历时,数据会被分成多个段,其中每一个都在不同的线程中处理,然后将结果一起输出。Stream 的并行操作依赖于 Java7 中引入的 Fork/Join 框架(JSR166y)来拆分任务和加速处理过程。

    Stream 的另外一大特点是,数据源本身可以是无限的。
    有多种方式生成 Stream Source:
    从 Collection 和数组
        Collection.stream()
        Collection.parallelStream()
        Arrays.stream(T array) or Stream.of()
    从 BufferedReader
        java.io.BufferedReader.lines()
    静态工厂
        java.util.stream.IntStream.range()
        java.nio.file.Files.walk()
    自己构建
        java.util.Spliterator
    其它
        Random.ints()
        BitSet.stream()
        Pattern.splitAsStream(java.lang.CharSequence)
        JarFile.stream()

    更多内容 请参考:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/

  • 相关阅读:
    Nginx学习高可用
    Nginx安装学习
    Nginx服务器熟悉
    SVN无法连接解决方法
    CentOS 7下搭建SVN服务器&多项目教程
    iframe操作
    Java 微服务架构选型
    vue-cli4.5创建vue项目
    线程间的协作(wait/notify/sleep/yield/join)
    多线程的创建、停止
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/10083564.html
Copyright © 2020-2023  润新知