zoukankan      html  css  js  c++  java
  • [Java 8 Lambda] java.util.stream 简单介绍

    包结构例如以下所看到的:




    这个包的结构非常easy,类型也不多。

     

    BaseStream接口

    全部Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些全部Stream都具备的行为。

     

    由于继承自AutoClosable接口,所以全部的Stream类型都能够用在Java 7中引入的try-with-resource机制中,以达到自己主动关闭资源的目的。实际上,仅仅有当Stream是通过SocketFiles IO等方式创建的时候,才须要关闭它。对于来自于CollectionsArraysStream,是不须要关闭的。

     

    Stream接口

    定义了众多Stream应该具有的行为。

    最典型的比方filter方法族,map方法族以及reduce方法族,这三个方法是FunctionalProgramming的标志。典型的Map-Filter-Reduce模式便是依靠这三个操作来定义的。

     

    与此同一时候,Stream接口还定义了一些用于创建Streamstatic方法,创建的Stream能够是有限的,也能够是无限的。有限的非常好理解,而无限Stream是一个新概念,通过generate方法或者iterate方法实现。

     

    IntStream, LongStream 以及 DoubleStream 接口

    基于原生类型int, long以及doubleStream。提供了众多类型相关的操作。

    典型的比如,sum方法,min/max方法,average方法等。这些方法都是Reduce操作的详细实现。

     

    Collect接口

    对于Reduce操作的抽象。此接口中定义了经常使用的Reduce操作。

    当中定义的Reduce操作能够通过串行或者并行的方式进行实现。BaseStream接口中的parallelsequentialunordered方法提供的高层API使并发程序设计变得很简洁。

    毕竟,Map-Filter-Reduce模式的灵魂就在于并行计算。

     

    Collectors

    提供了众多能够直接使用的Reduce操作。

    典型的比方groupingBy以及partitioningBy操作。它们都能够通过串行或者并行的方式进行实现。比方,groupingByConcurrent会使用并行的方式进行grouping操作。

     

    StreamSupport

    提供了底层的一些用于操作Stream的方法,假设不须要创建自己的Stream,一般不须要使用它。


  • 相关阅读:
    inf的设置【知识】
    输入加速【模板】
    floyed算法【最短路】【模板】
    vector的erase函数使用
    欧拉图
    组合索引
    索引的存储
    索引失效
    装饰器和代理模式
    单例模式
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3845340.html
Copyright © 2011-2022 走看看