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,一般不须要使用它。


  • 相关阅读:
    日记10硬件与操作系统安装专用
    程序设计与算法(三)C++面向对象程序设计 (北大MOOC)
    macbook pro14 前端基本配置【20211114】
    springboot配置rabbitmq的序列化反序列化格式
    sql优化把派生表改成子查询,查询速度将变快
    Android开发 因为ViewPager与SwipeRefreshLayout冲突导致RecyclerView或者其他列表布局的item无法点击的问题
    Kotlin开发 委托
    Kotlin开发 协程的实践 Retrofit + 协程 + ViewModel
    git clean用法
    kotlin开发 高阶函数学习与记录
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3845340.html
Copyright © 2011-2022 走看看