创建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 ...
随机推荐
- Python基础——函数进阶
等待更新…………………… 后面再写
- Minor GC、Major GC、Full GC、分配担保
转载:http://www.importnew.com/15820.html 空间分配担保 区别 在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章.书籍和演讲来 ...
- css画心形、三角形的总结
.heart { width: 10px; height: 10px; /* position: fixed; */ background: #fff; transform: rotate(45deg ...
- jlink commander使用
1.将JLink.exe拷贝到某个文件夹底下 2.建立bat文件,内容如下: JLink.exe -device Cortex-A7 -if JTAG -speed 4000 -jtagconf -1 ...
- SpringBoot之模板引擎
一.Thymeleaf 1.1 集成 templates 在 pom.xml 文件中添加依赖 <dependencies> ...... <dependency> <gr ...
- xmlns, xmlns:xsi, xsi:schemaLocation 解释
xmlns, xmlns:xsi, xsi:schemaLocation 解释 xmlnsxsischemaLocation 我们在写 xml 文件时,尤其是 spring .mybatis 的配置文 ...
- netty之IO演进之路
常见IO类型: 传统的同步阻塞I/O编程<BIO> 基于NIO的非阻塞编程 基于NIO2.0的异步非阻塞AIO编程 BIO缺点: 没有数据缓冲区,I/O性能存在问题 没有Channel概念 ...
- Vue框架使用sass
引入: cnpm install node-sass --save-dev //安装node-sass cnpm install sass-loader@7.3.1 --save-dev cnpm i ...
- vue-awesome-swiper 轮播图使用
最近在做vue 的轮播图的问题,项目中也遇到一些问题,查了 swiper 官网资料, 还有vue-awesome-swiper的文案,最后把怎么使用这个插件简单的说下,啥东西都需要自己实践下,还是老规 ...
- 【c++】一道关于继承和析构的笔试题
题目如下,求输出结果 class A { public: A() { cout<<"A"<<endl; } ~A() { cout<<" ...