创建Stream
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的更多相关文章
- java1.8新特性(四 创建 stream对象)
java1.8 提供了 stream对象 可以用作 对 集合 数组的 一系列操作,都是基于lambda 表达式 ,所以得先熟悉lambda 表达式 集合创建stream对象 // 1.集合创建stre ...
- Java 8创建Stream流的5种方法
不知不觉间,Java已经发展到13了,来不及感慨时间过得真的太快了,来不及学习日新月异的技术更新,目前大多数公司还是使用的JDK8版本,一方面是版本的稳定,另一方面是熟悉,所以很多公司都觉得不升级也挺 ...
- Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!
之前栈长分享过 Java 8 一系列新特性的文章,其中重点介绍了 Stream. 获取上面这份 Java 8~12 系列新特性干货文章,请在微信搜索关注微信公众号:Java技术栈,在公众号后台回复:j ...
- 廖雪峰Java16函数式编程-2Stream-2创建Stream
1. 方法1:把一个现有的序列变为Stream,它的元素是固定的 //1.直接通过Stream.of()静态方法传入可变参数进行创建 Stream<Integer> s = Stream. ...
- 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?
写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...
- Spring WebFlux 学习笔记 - (一) 前传:学习Java 8 Stream Api (1) - 创建 Stream
影子 在学习Spring WebFlux之前,我们先来了解JDK的Stream,虽然他们之间没有直接的关系,有趣的是 Spring Web Flux 基于 Reactive Stream,他们中都带了 ...
- Java8初体验(二)Stream语法详解
感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验(一)lambda表达式语法比 较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例 ...
- twitter storm源码走读之8 -- TridentTopology创建过程详解
欢迎转载,转载请注明出处,徽沪一郎. 从用户层面来看TridentTopology,有两个重要的概念一是Stream,另一个是作用于Stream上的各种Operation.在实现层面来看,无论是str ...
- Stream语法详解
1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel agg ...
随机推荐
- 解析html,提取元素参数
r = s.get(loginurl, verify=False) dom = etree.HTML(r.content.decode("utf-8")) try: result[ ...
- stars-one的原创工具——星之小说下载器(JavaFx应用 )
星之小说下载器Kotlin版 基于星之小说下载器Java版重构的Kotlin版本 github地址 使用说明 确保电脑有jdk8+以上的环境,双击即可运行(win10系统),win7则需要输入命令ja ...
- 一道有关#define的题
题目是:查看以下代码,问结果是什么? 结果是打印出“array:16345678910”吗? #include "stdafx.h" #include <iostream&g ...
- linux的安全--Selinux,tcp_wrappers,iptables使用
一.linux安全 安全主要是端口与服务的对应配置 1.1 linux安全主要通过下面三个进行加固 Selinux----主要是对内核的访问权限加以控制 tcp_wrappers---一定程度上限制某 ...
- Python杂章
IDLE常用的快捷键: Ctrl+]:缩进代码 Ctrl+[:取消缩进 Alt+3:注释代码 Alt+4:去掉注释 F5:运行代码 Ctrl+Z:撤销一步 print('你好,Python!')
- php 简单删除提示
下面是别的网友整理的,大同小异.一般通过弹出确认按钮来判断是否继续进入下面的删除页面. 第一种: <a href="javascript:if(confirm('确认删除吗?'))wi ...
- 三台mysql5.7服务器互作主从配置案例
一.架构 三台msyql服务器221,222,223,每台服务器开两个实例,3306作为主库,3307作为另外一台服务器的从库 二.每台服务器安装双实例 参照:https://www.cnblogs. ...
- 如何代替set get方法
博主刚刚看其他人的博客的时候,发现好多人还在用 生成set get方法 虽然是自动生成的 但是看起来很复杂,影响代码的可读性 那么有什么办法能代替set get方法吗? 当然有啦!!! 只需要导入 ...
- Linux文件命名规则
Linux目录结构命名规定 几乎所有的Linux版本都会遵循FHS(Filesystem Hierarchy Standard),中文翻译过来即为文件系统层次化标准.类似于Windows操作系统中c盘 ...
- 使用RegisterPointerInputTarget时的一些注意事项
RegisterPointerInputTarget :允许调用者注册一个目标窗口,指定类型的所有指针输入都重定向到该窗口. 要使用它必须使 UIAccess = true,见下图 在设置完之后,需要 ...