到目前为止,我们已经将整型收集到了一个Stream<Integer>的流中,不过将每个整数包装成相应对象显然是一个低效的做法,对于其他的基本类型也是一样,我们前面说过jdk提供包装类已经自动装箱和拆箱只是为了面向对象编程,我们不应该滥用。为此,流API提供了IntStream,LongStream,DoubleStream等类型,专门用来直接存储原始类型值,不必使用包装。注意的是,一共是有8个的基本类型,流API只提供了IntStream,LongStream,DoubleStream3个基本类型的流。

要想创建一个IntStream,我们可以调用IntStream.of和Arrays.Stream方法,对于对象流,我们还可以使用静态的生成和迭代方法。除此以外,IntStream还拥有静态方法range和rangeClosed,用来产生步进为1的一个整数范围。当我们拥有一个对象流的时候,我们可以通过mapToInt,mapToLong或者MapToDouble方法将它转换为一个原始类型流。要将一个原始类型流转换成一个对象流,可以使用boxed方法。

OK,上面的几个api通过一段代码演示:

/**
* @创建作者: LinkinPark
* @创建时间: 2015年11月3日
* @功能描述: 演示基本类型流的用法
*/
public class Test
{ public static void main(String[] args)
{
//使用IntStream的of方法来获取一个IntStream。
IntStream stream = IntStream.of(1, 2, 3);
//转换一个数组获得一个IntStream流
int[] array = { 1, 2, 3 };
IntStream stream1 = Arrays.stream(array, 0, 2);
//调用IntStream的range和rangeClosed方法获取流
IntStream.range(0, 100).forEach(System.out::println);//不包括上限
IntStream.rangeClosed(0, 100).forEach(System.out::println);//包括上限
System.out.println("注意流的延时性,不一定马上被执行"); //将一个原始类型的流转换成一个对象流,可以使用boxed方法。
Stream<Integer> boxed = IntStream.range(0, 100).boxed();
} }

总结:



一般来说,原始类型流上的方法在与对象流上调用的方法类似,但是有以下几点显著的区别:

1,toArray方法会返回一个原始类型的数组

2,产生Optional结果的方法会返回一个OptionalInt,OptionalLong或者OptionalDouble类型。这些类与Optional类类似,但是他们没有get方法,而是用getAsInt,getAsLong和getAsDouble来代替。

3,方法sum,average,max,min会返回总和,平均值,最大值和最小值。在对象流中没有定义这些方法

4,summaryStatistics方法会产生一个intsummaryStatistics对象,可以同时获得原始类型流的总和,平均值,最大值和最小值。

流API--原始类型流的更多相关文章

  1. J2SE 8的流库 --- 基本类型流的使用

    展现流的方法 public static <T> void show(String title, Stream<T> stream){ System.out.println(& ...

  2. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  3. java8-Stream流API

    一回顾与说明 经过前面发布的三章java8的博客,你就懂得了我们为什么要用Lamda表达式,Lamda表达式的原理与函数式接口的关系,从Lamda表达式到方法引用和构造引用. 想要学Stream流你必 ...

  4. Python 完美诠释"高内聚"概念的 IO 流 API 体系结构

    1. 前言 第一次接触 Python 语言的 IO API 时,是惊艳的.相比较其它语言所提供的 IO 流 API . 无论是站在使用者的角度还是站在底层设计者的角度,都可以称得上无与伦比. 很多人在 ...

  5. 响应式流API的构建基础

    下面三个重要的概念是响应式流API的构建基础: 发布者是事件的发送方,可以向它订阅. 订阅者是事件订阅方. 订阅将发布者和订阅者联系起来,使订阅者可以向发布者发送信号. http://www.info ...

  6. Java9系列第6篇-Stream流API的增强

    我计划在后续的一段时间内,写一系列关于java 9的文章,虽然java 9 不像Java 8或者Java 11那样的核心java版本,但是还是有很多的特性值得关注.期待您能关注我,我将把java 9 ...

  7. 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】

    day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...

  8. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  9. 统一批处理流处理——Flink批流一体实现原理

    实现批处理的技术许许多多,从各种关系型数据库的sql处理,到大数据领域的MapReduce,Hive,Spark等等.这些都是处理有限数据流的经典方式.而Flink专注的是无限流处理,那么他是怎么做到 ...

随机推荐

  1. 扩充表字段长度,引发的意外KILLED/ROLLBACK

    这一段时间,因为系统升级,新系统产生的数据长度,比原来的数据长度要长,所以说要扩充一下字段长度. ) --修改字段长度sql 在执行的时候,有这样一个情况. 例如Student表的Name字段长度是n ...

  2. TCP协议详解(一)

    Tcp协议作为传输层的重要协议之一,想必每个稍有网络编程知识的人都不会感觉到陌生,三次握手/四次挥手这些基本概念也都是耳熟能详.但是当你们进行具体的网络编程的时候发现有很多事情并没有想象中的那么简单, ...

  3. Java学习笔记2(输入与随机数简单介绍)

    输入: import java.util.Scanner; public class ScannerDemo{ public static void main(String[ ] args){ Sca ...

  4. servlet里获得jsp页面里select的选项之值

    <span style="font-size:24px;"><select name=first> <option value="1&quo ...

  5. 记一次使用Node.js electron打包网站的记录

    具体步骤请参考:http://blog.csdn.net/a727911438/article/details/70834467 打包时出现了不少问题,逐一记录下来以供其他人参考. package.j ...

  6. 【转载】LINUX上MYSQL优化三板斧

    现在MySQL运行的大部分环境都是在Linux上的,如何在Linux操作系统上根据MySQL进行优化,我们这里给出一些通用简单的策略.这些方法都有助于改进MySQL的性能. 闲话少说,进入正题. 一. ...

  7. Flask基础

    简介 Flask是当下流行的Web框架,它是用Python实现的.Flask显著的特点是:它是一个“微”框架.”微”意味着Flask旨在保持核心的简单,但同时又易于扩展.默认情况下,Flask 不包含 ...

  8. java.lang.Class类中的某些方法

    反射的代码会经常遇到,Class类中方法真的多,且用的少,大多用在底层源码这块,既然看到了,就记录一下吧,说不定以后厉害了,自己封装框架,haha getComponentType()方法: Syst ...

  9. web.xml解析

    常用元素及含义 <!-- standalone 定义了外部定义的 DTD 文件的存在性,有效值是 yes和 no --> <?xml version="1.0" ...

  10. 一种数据与逻辑分离的Python单元测试工具

    一种数据与逻辑分离的Python单元测试工具 几个概念 TestCase TestCase是一个完整的测试单元,最小的测试执行实体,就是我们常说的测试用例. TestSuite 以某种特性将测试用例组 ...