[Java 8 Lambda] java.util.stream 简介

包结构如下所示:

这个包的结构很简单,类型也不多。

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 简介,布布扣,bubuko.com

时间: 2024-10-05 05:07:06

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

[Java 8 Lambda] java.util.stream 简单介绍

包结构例如以下所看到的: 这个包的结构非常easy,类型也不多. BaseStream接口 全部Stream接口类型的父接口,它继承自AutoClosable接口,定义了一些全部Stream都具备的行为. 由于继承自AutoClosable接口,所以全部的Stream类型都能够用在Java 7中引入的try-with-resource机制中,以达到自己主动关闭资源的目的.实际上,仅仅有当Stream是通过Socket,Files IO等方式创建的时候,才须要关闭它.对于来自于Collection

Java之Lambda表达式和Stream类简单例子

开心一笑 提出问题 java的lambda表达式和Stream如何使用??? 解决问题 Lambda表达式的语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } 看例子学习吧! 例一:定义一个AyPerson类,为之后的测试做准备. package com.evada.de; import java.util.Arrays; import java.util.List; class AyPerson{ priv

java.util.stream 库简介

Java Stream简介 Java SE 8 中主要的新语言特性是拉姆达表达式.可以将拉姆达表达式想作一种匿名方法:像方法一样,拉姆达表达式具有带类型的参数.主体和返回类型.但真正的亮点不是拉姆达表达式本身,而是它们所实现的功能.拉姆达表达式使得将行为表达为数据变得很容易,从而使开发具有更强表达能力.更强大的库成为可能. Java SE 8 中引入的一个这样的库是 java.util.stream 包 (Streams),它有助于为各种数据来源上的可能的并行批量操作建立简明的.声明性的表达式.

jdk1.8 java.util.stream.Stream类 详解

为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream.Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (

java8 函数式编程入门官方文档中文版 java.util.stream 中文版 流处理的相关概念

前言 本文为java.util.stream 包文档的译文 极其个别部分可能为了更好理解,陈述略有改动,与原文几乎一致 原文可参考在线API文档 https://docs.oracle.com/javase/8/docs/api/ Package java.util.stream Description 一些用于支持流上函数式操作的类 ,例如在集合上的map-reduce转换.例如 int sum = widgets.stream() .filter(b -> b.getColor() == R

java.util.stream.Stream 接口中的常用方法

流模型的操作很丰富,下面介绍一些常用的API.这些方法可以被分成两种: 延迟方法 返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用.(除了终结方法外,其余方 法均为延迟方法.) 终结方法 返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调 用.在这里介绍的终结方法包括 count 和 forEach 方法. 逐一处理:forEach 虽然方法名字叫 forEach ,但是与for循环中的“for-each”昵称不同.

java.util.Calendar简介

java.util.Calendar简介 一般写为:import java.util.Calendar;在开头 然后在中间写上, Calendar cal = Calendar.getInstance(); int year=cal.get(Calendar.YEAR); int month=cal.get(Calendar.MONTH);就可以了: Calendar是一个抽象类,我们无法直接实例化它,它有一个具体子类实体类java.util.GregorianCalendar,这个类实现的就是

Java中Lambda表达式的使用

简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块

Java中Lambda表达式的使用(转)

https://www.cnblogs.com/franson-2016/p/5593080.html 简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能.本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口. lambda表达式