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

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

BaseStream接口

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

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

Stream接口

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

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

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

IntStream, LongStream
以及 DoubleStream
接口

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

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

Collect接口

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

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

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

Collectors

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

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

StreamSupport

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

[Java 8 Lambda] java.util.stream 简单介绍的更多相关文章

  1. Java 8 Lambda 表达式及 Stream 在集合中的用法

    简介 虽然 Java 8 已经发布有一段时间了,但是关于 Java 8 中的 Lambda 表达式最近才开始系统的学习,刚开始就被 Stream 的各种骚操作深深的吸引住了,简直漂亮的不像 Java. ...

  2. Java中Synchronized的用法(简单介绍)

    简单介绍 synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调 ...

  3. java中equals以及==的用法(简单介绍)

    简单介绍 equals方法是java.lang.Object类的方法 有两种用法说明: 一.对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同. 1.“==”比较两 ...

  4. Java Web中web.xml文件简单介绍

    参考博客: https://www.cnblogs.com/Y-oung/p/8401549.html 1.XML 声明和根元素 <?xml version="1.0" en ...

  5. C# 基础知识系列- 6 Lambda表达式和Linq简单介绍

    前言 C#的lambda和Linq可以说是一大亮点,C#的Lambda无处不在,Linq在数据查询上也有着举足轻重的地位. 那么什么是Linq呢,Linq是 Language Intergrated ...

  6. Java快速入门-04-Java.util包简单总结

    学Java的程序员,lang包和util包最好是要过一遍的. 建议大家都序下载一个离线版开发文档,查阅非常方便,我给大家提供一个中文版 jdk1.8 离线文档,查看:JAVA - JDK 1.8 AP ...

  7. Java并发编程之闭锁CountDownLatch简单介绍

    闭锁相当于一扇门,在闭锁到达结束状态之前,这扇门一直是关闭着的,没有不论什么线程能够通过,当到达结束状态时.这扇门才会打开并容许全部线程通过.它能够使一个或多个线程等待一组事件发生. 闭锁状态包含一个 ...

  8. java集合第一节,List简单介绍

    Java中List集合的常用方法   List接口是继承Collection接口,所以Collection集合中有的方法,List集合也继承过来. package 集合; import java.ut ...

  9. Java学习记录-Jdk包简单介绍

    java.applet Java语言编写的一些小应用程序 java.awt AWT 是Abstract Window ToolKit (抽象窗口工具包)的缩写,这个工具包提供了一套与本地图形界面进行交 ...

随机推荐

  1. 安装solaris_11.2与windows双系统(VM10模拟实现)(二)

    下面我们在虚拟机下安装双系统 1.首先我们新建一个虚拟机 新建的时候一定要注意客户机操作系统应选择solaris,不然不行: 新建完成后我们先分两个分区,这里我先从U盘启动进去(也可以用xp/win7 ...

  2. AWS之EC2远程登录

    网上有丰富的免费资源,Amazon的云主机就是开发者和学习者很好的选择. 但你得有一张信用卡,注册个AWS(Amazon web service)账号,就可以有自己公网ip的服务器了!!! 最近在折腾 ...

  3. 怎查看linux系统的位数

    # uname -a x86_64则说明你是64位内核, 跑的是64位的系统. i386, i686说明你是32位的内核, 跑的是32位的系统

  4. iOS多线程系列(1)

    多线程这个概念的接触是蛮早的时候了,当时还是单核单CPU的时候,Thread这个概念已经出现了,当时比较流行的方案是时间片轮流,线程可以优先级抢占,但一次只能运行一个线程,实际上多线程是不能真正并行处 ...

  5. 读取系统执行状态的shell脚本

    近期在学习shell.老大让写一个读取系统配置信息的脚本当作练习和工作验收,我就写了这么一个脚本,读取操作系统,内核,网卡,cpu,内存,磁盘等信息,目的是让看的人一眼就能看出这台机子的配置以及眼下的 ...

  6. Android编程之LayoutInflater的inflate方法具体解释

    LayoutInflater的inflate方法,在fragment的onCreateView方法中经经常使用到: public View onCreateView(LayoutInflater in ...

  7. js/jquery获取浏览器窗口可视区域高度和宽度以及滚动条高度实现代码

    获取浏览器窗口的可视区域高度和宽度,滚动条高度有需要的朋友可参考一下.IE中,浏览器显示窗口大小只能以下获取: 代码如下复制代码 代码如下: document.body.offsetWidth doc ...

  8. VMware vCenter Converter 使用,Error code: 2147549183 (0x8000FFFF) 解决方案

    在实际生产环境中,为了节省成本,会将实体机转换为虚拟机,从而虚拟化. 在公司数据中心环境的中跑VMware vCenter ConverterStandalone Client 4.3,将其中一台on ...

  9. C#用网易邮箱发送邮件(同步异步)

    SmtpClient smtpServer = new SmtpClient("smtp.163.com"); smtpServer.Port = ; smtpServer.Cre ...

  10. Spring-----多环境中加载资源配置文件

    转载自:http://blog.csdn.net/hekewangzi/article/details/51942128