1.创建Stream        

create Stream from Collections;

create Stream from values;

create Stream from Arrays;

craeate Stream from files;

craeate Stream from functions

代码举例:

 package com.cy.java8;

 import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream; public class CreateStream { public static void main(String[] args) {
createStreamFromCollection().forEach(System.out::println); createStreamFromValues().forEach(System.out::println); createStreamFromArrays().forEach(System.out::println); createStreamFromFile().forEach(System.out::println);
} /**
* create stream from collection
* 这里list的元素的顺序放到strem中不会改变,原来是什么样的顺序,stream中就是什么样。
* @return
*/
private static Stream<String> createStreamFromCollection(){
List<String> list = Arrays.asList("hello", "world", "stream");
return list.stream();
} private static Stream<String> createStreamFromValues(){
return Stream.of("hello", "world", "stream");
} private static Stream<String> createStreamFromArrays(){
String[] strings = new String[]{"hello", "world", "stream"};
return Arrays.stream(strings);
} /**
* create stream from file
* @return
*/
private static Stream<String> createStreamFromFile(){
Path path = Paths.get("F:\\IdeaProjects\\Java8Learning\\java8\\src\\main\\java\\com\\cy\\java8\\CreateStream.java");
Stream<String> lines = null;
try {
lines = Files.lines(path);
} catch (IOException e) {
throw new RuntimeException(e);
}
return lines;
}
}

打印结果如下:

hello
world
stream
hello
world
stream
hello
world
stream
package com.cy.java8; import java.io.IOException;
....
把CreateStream.java文件分行打印出来了...

2.创建Stream        

create stream from Stream.iterate;

create stream from Stream.generate;

代码例子:

 package com.cy.java8;

 import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString; import java.util.Random;
import java.util.function.Supplier;
import java.util.stream.Stream; public class CreateStream2 { public static void main(String[] args) {
createStreamFromIterator().forEach(System.out::println); createStreamFromGenerate().forEach(System.out::println); createObjStreamFromGenerate().forEach(System.out::println);
} /**
* 这里会产生一个无限的Stream
* 0,2,4,6,8...
* 可以limit来获取指定个数
* @return
*/
private static Stream<Integer> createStreamFromIterator(){
Stream<Integer> stream = Stream.iterate(0, a -> a + 2).limit(3);
return stream;
} /**
* 也会创建一个无限的stream
* 类似的IntStream,DoubleStream也是类似用法
* @return
*/
private static Stream<Double> createStreamFromGenerate(){
Stream<Double> stream = Stream.generate(Math::random).limit(3);
return stream;
} /**
* 自定义一个Obj的stream
* @return
*/
private static Stream<Obj> createObjStreamFromGenerate(){
Stream<Obj> objStream = Stream.generate(new ObjSuppiler()).limit(3);
return objStream;
} static class ObjSuppiler implements Supplier<Obj>{
private int index = 0;
private Random random = new Random(System.currentTimeMillis()); @Override
public Obj get() {
index = random.nextInt(100);
return new Obj(index, "Name-"+index);
}
} @Getter
@AllArgsConstructor
@ToString
static class Obj{
private int id;
private String name;
}
}

打印如下:

0
2
4
0.2300226452750267
0.48246633929281424
0.051774439637685465
CreateStream2.Obj(id=97, name=Name-97)
CreateStream2.Obj(id=84, name=Name-84)
CreateStream2.Obj(id=18, name=Name-18)

  

-----

创建Stream的更多相关文章

  1. java1.8新特性(四 创建 stream对象)

    java1.8 提供了 stream对象 可以用作 对 集合 数组的 一系列操作,都是基于lambda 表达式 ,所以得先熟悉lambda 表达式 集合创建stream对象 // 1.集合创建stre ...

  2. Java 8创建Stream流的5种方法

    不知不觉间,Java已经发展到13了,来不及感慨时间过得真的太快了,来不及学习日新月异的技术更新,目前大多数公司还是使用的JDK8版本,一方面是版本的稳定,另一方面是熟悉,所以很多公司都觉得不升级也挺 ...

  3. Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!

    之前栈长分享过 Java 8 一系列新特性的文章,其中重点介绍了 Stream. 获取上面这份 Java 8~12 系列新特性干货文章,请在微信搜索关注微信公众号:Java技术栈,在公众号后台回复:j ...

  4. 廖雪峰Java16函数式编程-2Stream-2创建Stream

    1. 方法1:把一个现有的序列变为Stream,它的元素是固定的 //1.直接通过Stream.of()静态方法传入可变参数进行创建 Stream<Integer> s = Stream. ...

  5. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  6. Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Api (1) - 创建 Stream

    影子 在学习Spring WebFlux之前,我们先来了解JDK的Stream,虽然他们之间没有直接的关系,有趣的是 Spring Web Flux 基于 Reactive Stream,他们中都带了 ...

  7. Java8初体验(二)Stream语法详解

    感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...

  8. twitter storm源码走读之8 -- TridentTopology创建过程详解

    欢迎转载,转载请注明出处,徽沪一郎. 从用户层面来看TridentTopology,有两个重要的概念一是Stream,另一个是作用于Stream上的各种Operation.在实现层面来看,无论是str ...

  9. Stream语法详解

    1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...

随机推荐

  1. 判断浏览器类型JS

    // 判断浏览器类型 getExplorer() { var explorer = window.navigator.userAgent, compare = function (s) { retur ...

  2. 【vue】canvas验证码组件--数字/数字加字母

    基于canvas的数字/数字+字符验证码   SIdentify.vue 组件 <!-- 基于canvas的数字/数字+字符验证码 --> <!-- 调用格式 <s-ident ...

  3. Nginx 故障实例

    linux vi 操作提示 Found a swap file by the name "/usr/local/nginx/conf/.nginx.conf.swp" 解决方法: ...

  4. Inno setup 开源的安装包打包软件

    Inno Setup是一个开源的安装包打包软件,下载地址是:http://www.jrsoftware.org/isdl.php 使用引导界面创建一个安装包打包 配置参考官方文档:http://www ...

  5. 22_2mybatis——CURD

    1.CURD操作 第一步:创建maven工程并导入坐标 <?xml version="1.0" encoding="UTF-8"?> <pro ...

  6. CodeForces-721C-Journey(DAG, DP)

    链接: https://vjudge.net/problem/CodeForces-721C 题意: Recently Irina arrived to one of the most famous ...

  7. MySQL——复制(Replication)

    1.复制概述 1.1.复制解决的问题数据复制技术有以下一些特点:(1)    数据分布(2)    负载平衡(load balancing)(3)    备份(4)    高可用性(high avai ...

  8. JAVA笔记26-网络编程(不等于网站编程)

    一.网络基础(TCP/IP详解) 1.IP协议(Internet Protocol):网络层,支持网间数据报通信.无连接数据报传送,数据报路由选择和差错控制. IPv4 32位(4字节),IPv6 1 ...

  9. #419 Div2 Problem C Karen and Game (贪心 && 暴力)

    题目链接:http://codeforces.com/contest/816/problem/C 题意 :给出一个 n*m 的变化后的矩阵,变化前矩阵的元素全是0,变化的规则是选择其中的一行或者一列将 ...

  10. Codeforces Round #287 (Div. 2) E. Breaking Good 路径记录!!!+最短路+堆优化

    E. Breaking Good time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...