Stream.of用于为给定元素创建顺序流。我们可以传递单个元素或多个元素。

查看java文档中的Stream.of方法声明。

static Stream of(T t)

参数:传递单个元素。

返回值:该方法返回一个包含一个元素的流。

static <T> Stream<T> of(T... values)

参数:传递多个元素。

返回值:该方法返回包含给定元素的流。

Stream.of创建有限元素流。

为了创建一个无限元素流,我们可以使用Stream.generate方法。

示例1:

让我们创建整数流。

Stream<Integer> mystream = Stream.of(10, 12, 14, 16);mystream.forEach(e -> System.out.println(e));

输出为10 12 14 16。

示例2:

让我们创建字符串流。

Stream<String> mystream = Stream.of("AA", "BB", "CC", "DD");mystream.forEach(e -> System.out.println(e));

示例3:

查看创建对象流的示例。

StreamOfObjDemo.java

public class StreamOfObjDemo {public static void main(String[] args) {Stream<User> userStream = Stream.of(new User("Mahesh", 22),new User("Krishn", 20),new User("Suresh", 25));userStream.forEach(u -> System.out.println(u.getUserName()));}
}
class User {private String userName;private int age;public User(String userName, int age) {this.userName = userName;this.age = age;}//Sets and Gets
} 

输出

Mahesh

Krishn

Suresh

IntStream, LongStream and DoubleStream

IntStream、LongStream和DoubleStream分别是原始int流、原始long流、原始double流的特化。这些接口有许多有用的方法。它们通过使用类中提供的静态方法初始化。

要创建IntStream,我们使用IntStream.of方法。

要创建LongStream,我们使用LongStream.of方法。

为了创建DoubleStream,我们使用DoubleStream.of方法。

查看例子。

StreamOfDemo.java

public class StreamOfDemo {public static void main(String[] args) {System.out.println("--- IntStream ---");IntStream intStream = IntStream.of(12, 14, 16);intStream.forEach(e -> System.out.println(e));System.out.println("--- LongStream ---");    LongStream longStream = LongStream.of(154L, 236L, 306L);longStream.forEach(e -> System.out.println(e));System.out.println("--- DoubleStream ---");    DoubleStream doubleStream = DoubleStream.of(123.56, 456.87, 784.65);doubleStream.forEach(e -> System.out.println(e));   }
} 

输出

--- IntStream ---121416--- LongStream ---154236306--- DoubleStream ---123.56456.87784.65

IntStream

java.util.stream.IntStream是一个原始整数值序列。诸如max和average之类的聚合操作可以使用顺序和并行操作来执行。

  • rangeClosed(a,b): 对a类加1止到b
  • range(a,b) : 考虑从a到b-1的值。
  • sum: 计算值的总和。
  • sorted: 对值进行排序。
public class IntStreamDemo {public static void main(String[] args) {System.out.println("--Using IntStream.rangeClosed--");IntStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));System.out.println("\n--Using IntStream.range--");IntStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));System.out.println("\n--Sum of range 1 to 10--");System.out.print(IntStream.rangeClosed(1,10).sum());System.out.println("\n--Sorted number--");IntStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));}
}

输出

--Using IntStream.rangeClosed--
169 196 225
--Using IntStream.range--
169 196
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15  

LongStream

java.util.stream.LongStream是一个原始长整值序列,聚合操作使用顺序和并行操作执行。方法与IntStream相同。

public class LongStreamDemo {public static void main(String[] args) {System.out.println("--Using LongStream.rangeClosed--");LongStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));System.out.println("\n--Using LongStream.range--");LongStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));System.out.println("\n--Sum of range 1 to 10--");System.out.print(LongStream.rangeClosed(1,10).sum());System.out.println("\n--Sorted number--");LongStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));}
} 

输出

--Using LongStream.rangeClosed--
169 196 225
--Using LongStream.range--
169 196
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15  

DoubleStream

java.util.stream.DoubleStream 是原始 double 值的序列,聚合操作使用顺序和并行操作执行。

  • average: 计算平均值。
  • max:找到最大值
public class DoubleStreamDemo {public static void main(String[] args) {System.out.println("--Using DoubleStream.of--");DoubleStream.of(5.33,2.34,5.32,2.31,3.51).map(d->d*1.5).forEach(s->System.out.print(s +" "));System.out.println("\n--Using DoubleStream.average--");double val = DoubleStream.of(12.1,11.2,13.3).average().getAsDouble();System.out.println(val);System.out.println("--Using DoubleStream.max--");val = DoubleStream.of(12.1,11.2,13.3).max().getAsDouble();System.out.println(val);System.out.println("--Using DoubleStream.filter--");DoublePredicate range = d -> d > 12.11 && d < 12.99;     DoubleStream.of(12.1,11.2,12.3).filter(range).forEach(d->System.out.print(d));}
} 

输出

--Using DoubleStream.of--
7.995 3.51 7.98 3.465 5.265
--Using DoubleStream.average--
12.200000000000001
--Using DoubleStream.max--
13.3
--Using DoubleStream.filter--
12.3 

Stream.of()和Arrays.stream()的区别用法

Java中Arrays类的stream(T [] array)方法用于从作为参数数组中获取顺序流,它返回一个Stream。

Stream of(T…values)返回一个有序的流,其元素为指定值。 Stream.of()方法仅对非基本类型调用Arrays.stream()方法。

下面通过例子说明一下:

String[] arr = { "Geeks", "for", "Geeks" };
Stream<String> stream = Arrays.stream(arr); Stream stream = Stream.of("Geeks", "for", "Geeks"); 

两者的不同

  1. 不同的返回类型:

对于基本数组(如int [],long []等),Arrays.stream()和Stream.of()具有不同的返回类型。

例:传递一个整数数组,Stream.of()方法返回Stream,而Arrays.stream()返回IntStream。

  1. Stream.of()需要展平,而Arrays.stream()不需要展平:

作为处理原始类型的Stream的理想类,是它们的原始Stream类型(例如IntStream,LongStream等)。因此,Stream.of()需要在使用之前显式地展平为其原始Stream。

参考:

【Java 8 新特性】Java Stream.of()用法示例_猫巳的博客-CSDN博客_stream.of

Java Stream of()用法及代码示例 - 纯净天空

Java 8 IntStream, LongStream and DoubleStream Example

Java Stream.of() Example

Java Stream.of()和Arrays.stream()的区别用法及代码示例 - 纯净天空

Stream.of()用法示例相关推荐

  1. 【Java 8 新特性】Java Stream.of()用法示例

    本页将介绍Java Stream.of方法示例.Stream.of用于为给定元素创建顺序流.我们可以传递单个元素或多个元素. 查看javadoc中Stream.of方法声明. static <T ...

  2. Linux find 用法示例

    Linux中find常见用法示例 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \; find命令的参数 ...

  3. list stream 去重_LeetCode 0349 两个数组的交集, stream()的用法总结

    [20201102 每日一题]刷题使我快乐.200+题解已收录至我的GitHub,欢迎关注. 349. 两个数组的交集 难度简单261 给定两个数组,编写一个函数来计算它们的交集.示例 1:输入:nu ...

  4. java函数参数使用冒号_java8中:: 用法示例(JDK8双冒号用法)

    JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下. 代码其实很简单: 以前的代码一般是如此的: public class Accep ...

  5. fopen函数的用法示例_使用示例的C语言中的fopen()函数

    fopen函数的用法示例 C语言中的fopen()函数 (fopen() function in C) Prototype: 原型: FILE *fopen(const char* filename, ...

  6. fwrite函数的用法示例_C语言中的fwrite()函数(带有示例)

    fwrite函数的用法示例 C中的fwrite()函数 (fwrite() function in C) Prototype: 原型: size_t fwrite(void *buffer, size ...

  7. Go基础系列:双层channel用法示例

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 双层通道的解释见Go的双层通道 ...

  8. objdump反汇编用法示例

    objdump反汇编用法示例 原文:http://blog.csdn.net/zoomdy/article/details/50563680 -d:将代码段反汇编 -S:将代码段反汇编的同时,将反汇编 ...

  9. python 装饰器 参数-python函数装饰器之带参数的函数和带参数的装饰器用法示例...

    本文实例讲述了python函数装饰器之带参数的函数和带参数的装饰器用法.分享给大家供大家参考,具体如下: 1. 函数带多个参数 # 普通的装饰器, 打印函数的运行时间 def decrator(fun ...

  10. php指定长度 分割整形,php指定长度分割字符串str_split函数用法示例

    本文实例讲述了php指定长度分割字符串str_split函数用法.分享给大家供大家参考,具体如下: 示例1:$str = 'abcdefgh'; $arr = str_split($str,2); 运 ...

最新文章

  1. poj1129Channel Allocation
  2. 64位开源处理器Rocket该人士介绍
  3. 使用windows自带远程桌面远程办公
  4. 线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进程的当前目录和进程用户ID与进程组ID。 进程拥有这
  5. vmware workstation 安装 fedora9+ vmware tools血泪史啊
  6. 2018蓝桥杯省赛---java---C---7(缩位求和)
  7. 在Google Cloud Platform的K8上运行Fn函数
  8. java 切换panel会闪烁_【19期】为什么Java线程没有Running状态?
  9. python编程基础张勇答案_Python程序开发、编程基础阶段试题及答案
  10. yii2 刷新缓存(刷新模型缓存)
  11. ChaiNext:多空胶着
  12. 适配器模式之状态模式
  13. Android - UI
  14. mysql可以建立个人数据库吗_mysql怎么建立数据库?
  15. [html5网页设计]英雄联盟lpl总决赛游戏网页设计大作业,hbuilder网页设计成品,dw网页设计成品模板,游戏网页设计带图片轮播,音乐,视频,注册登录表单。
  16. 软件工程师面试7大技巧
  17. scala 的上界下界
  18. 讯飞语音包实现Android语音合成
  19. Android中的Cursor
  20. 普通驻极体MIC与数字硅麦接受信号对比

热门文章

  1. 续流二极管作用及工作原理
  2. 贝叶斯自举法(BayesianBootstrap)简介
  3. 850是什么意思_850是什么意思
  4. 信度spss怎么做_实用干货!信度分析超全步骤总结!
  5. 程序员要不要懂底层原理
  6. 校园学生疫情防范监控小程序 毕业设计-附源码281444
  7. 中国成为全球最活跃5G市场
  8. 聊一聊固态硬盘的那些事
  9. 用C语言求解一元二次方程的简单方法
  10. C/C++整数除法以及保留小数位的问题