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. 使用layer弹窗和layui表单做新增功能

    注释:代码参考http://blog.51cto.com/825272560/1891158,在其修改之上而来,在此感谢! 1.需求:使用layer在弹窗内完成新增,成功后提示并刷新页面(父页面,li ...

  2. excle 文件的导入和导出

    //excle 文件导出 public function excel(){ try{ include(BASE_PATH."Excel/PHPExcel.php"); // ech ...

  3. Linux20期学习笔记 Day2

    Linux系统进程状态及部分基础命令

  4. php判断变量是否为数字is_numeric()

    is_numeric — 检测变量是否为数字或数字字符 <?php $tests = array( "31", 1380, "1e4", "no ...

  5. node模块管理

    淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org

  6. selenium-java爬虫实现

    推荐的网站学习网站 1.官方文档 http://www.seleniumhq.org/docs/ 2.selenium多线程 http://www.cnblogs.com/dingmy/p/34380 ...

  7. vue项目中利用popstate处理页面返回操作

    需求背景:项目中需要做一个返回确认,避免用户误触返回键而退出当前页面. 原理:利用history和浏览器刷新popstate状态 实现: 1.在mounted() 阶段判断并添加popstate事件监 ...

  8. python接口自动化五(参数关联)

    前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 (博客园的登录机制已经变了,不能用账号和密码登录了 ...

  9. WIN 7 的vs2008 试用版评估期结束的解决方法

    1. 在VS2008安装目录下把Setup/setup.sdb文件中的 [Product Key] T2CRQGDKBVW7KJR8C6CKXMW3D 改成 [Product Key] PYHYPWX ...

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

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