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. VMware 问题

    桥接模式下,小鸡上不了网问题 多网卡导致的问题 解决:编辑-虚拟网络编辑器 选择vmnet0,然后点击右下角更改设置 把自动改为指定要桥接的网卡,然后点击确定,测试看看.

  2. 22_4mybatis——动态SQL

    1.创建maven工程并导入坐标 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE confi ...

  3. squid之------安装与基本配置

    1.rpm安装squid yum -y install squid 2.squid主要组成部分 服务名:squid 主程序:/usr/sbin/squid 配置目录:/etc/squid 主配置文件: ...

  4. 推荐几个天气Api接口 (可在小程序中使用)

    国内的地图软件基本是支持查询天气的唯独腾讯地图不支持天气查询,当然其他天气平台提供的接口也是够个人使用的 1.高德地图(高德地图开发者平台)支持获取实时天气数据 2.百度地图(百度地图开放平台)支持获 ...

  5. ZROI 19.08.03 DP入门

    \(n\)个点,要求连一棵树,设点\(i\)的度数为\(d_i\),则其贡献为\(f(d_i)\mod 59393\),其中\(f(x)\)是一个\(k\)次多项式.最大化总贡献.\(n\leq 30 ...

  6. 【Linux】CentOS6上mysql5.7安装

    1.下载安装yum源 根据系统下载yum源 https://dev.mysql.com/downloads/repo/yum/ rpm -ivh xxxxx.rpm 2.修改yum源 vim /etc ...

  7. 对Git仓库里的.idea进行研究------引用

    1.什么是.idea文件夹 因为IntelliJ IDEA是JetBrains最早推出的IDE(JetBrains一开始叫IntelliJ),因此使用IDEA作为配置文件夹的名称.按照这个SO问题里最 ...

  8. TCP三次握手摘要

    这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致. 而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足& ...

  9. 镜像源操作-ananconda-docker

    CentOS mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup CentOS 6 wget - ...

  10. springmvc+ajax异步上传图片

    1.javaweb传统的上传图片方式就是通过form表单提交 <form action="#" method="post" enctype="m ...