java8 : 流
package day02.com.offcn.test; import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.stream.*; /**
* @author: CC
* @date: 2019/9/8
*/
public class 流 {
//流的创建
public static void main(String[] args) throws IOException {
//由值创建流,静态方法Stream.of
Stream<String> stream = Stream.of("JAVA 8","Lambdas","In","Action"); //由数组创建流, 静态方法Arrays.stream
int[] numbers = {3,4,5,6,11,13};
int sum = Arrays.stream(numbers).sum(); //由文件生成流
Stream<String> lines = Files.lines(Paths.get("D:/aa.txt"), Charset.defaultCharset());
long sum1 = lines.count(); //由函数生成流,生成无限流
//迭代
Stream.iterate(0,n->n+2)
.limit(10)
.forEach(System.out::println);
//生成
Stream.generate(Math::random)
.map(aDouble -> aDouble*100)
.limit(10)
.forEach(System.out::print); //collection构建流,集合流
Collection collection = new HashSet();
collection.stream(); // 中间操作(intermediate)主要有以下方法(此类型的方法返回的都是Stream对象):
// map (mapToInt, flatMap 等)、 filter、 distinct、 sorted、 peek、
// limit、 skip、 parallel、 sequential、 unordered List<String> list = Arrays.asList("aaa","ddd","bbb","ccc","a2a","d2d","b2b","c2c","a3a","d3d","b3b","c3c"); List list1 = list.stream()
.filter(s -> s.equals("aaa"))
.map(s -> "df")
.distinct()
.limit(10)
.skip(5)
.mapToInt(value -> 10)
.mapToDouble(value -> 0.1)
.mapToLong(value -> 23)
.mapToObj(value -> "dsfs")
.sorted()
.parallel()
.peek(System.out::print)
.collect(Collectors.toList());
//留意装箱。自动装箱和拆箱操作会大大降低性能。Java 8中有原始类型流(IntStream、
//LongStream、DoubleStream)来避免这种操作,但凡有可能都应该用这些流。 Object[] obj = list1.stream().toArray();
Arrays.asList(obj).stream().max((o1, o2) -> 0);
Arrays.asList(obj).stream().min((o1, o2) -> 0);
boolean boo = Arrays.asList(obj).stream().allMatch(o -> true);
Arrays.asList(obj).stream().forEach(System.out::print);
Arrays.asList(obj).stream().count();
Arrays.asList(obj).stream().iterator();
// 终端操作(terminal)主要有以下方法:
// forEach、 forEachOrdered、 toArray、 reduce、 collect、
// min、 max、 count、 anyMatch、 allMatch、 noneMatch、
// findFirst、 findAny、 iterator
}
}
java8 : 流的更多相关文章
- 【Java8流】使用学习
[Java8流]使用学习 ============================================= 1.删除子目录及文件 ============================== ...
- Java8 流式 API(`java.util.stream`)
熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...
- 公子奇带你进入Java8流的世界(一)
在说流之前,我们先来看看集合,为什么呢?作为Java8中的新成员,它和集合有很多相似之处,同时它们也是可以互相转化的.集合不仅仅是Java语言,任何一门高级开发语言都有集合的概念,集合顾名思义,就是很 ...
- 公子奇带你进入Java8流的世界(二)
在上一篇中我们带领大家简单的了解流的概念及使用场景,本节我们就来好好的介绍流的常见用法. 一.筛选和切片 对于一串流,我们有时需要取出我们需要的流中某些元素,主要是通过谓词筛选.看代码: 首先定义一个 ...
- java8 流操作
0 创建流 public void test1(){ List<String> list = new ArrayList<>(); Stream<String> ...
- JAVA8流操作
* Stream 的三个操作步骤: * 1创建Stream * 2中间操作 * 3终止操作 package airycode_java8.nice6; import airycode_java8.ni ...
- java8流式编程(一)
传送门 <JAVA8开发指南>为什么你需要关注 JAVA8 <Java8开发指南>翻译邀请 Java8初体验(一)lambda表达式语法 Java8初体验(二)Stream语法 ...
- java8 流式编程
为什么需要流式操作 集合API是Java API中最重要的部分.基本上每一个java程序都离不开集合.尽管很重要,但是现有的集合处理在很多方面都无法满足需要. 一个原因是,许多其他的语言或者类库以声明 ...
- java8 流操作 好文网址
api 各方法详解(很不错!) http://blog.51cto.com/turnsole/2093185 api 各方法 简介: https://www.cnblogs.com/guguli/p/ ...
随机推荐
- namenode 优化 mv慢的问题
问题现象 问题描述 公司业务程序需求每30分钟mv 一万多个文件,如果三十分钟之内当前的文件内容没有全部移动,程序报错并且停止. 分析 通过分析,发现在启动balancer和不启动balancer的情 ...
- Tkinter 之NoteBook选项卡标签
一.参数说明 参数 作用 width 选项卡宽度,单位像素 height 选项卡高度 cursor 鼠标停留的样式 padding 外部空间填充,是个最多4个元素的列表 style 设置menubo ...
- 【CSP模拟赛】仔细的检查(树的重心&树hash)
题目描述 nodgd家里种了一棵树,有一天nodgd比较无聊,就把这棵树画在了一张纸上.另一天nodgd更无聊,就又画了一张. 这时nodgd发现,两次画的顺序是不一样的,这就导致了原本的某一个节点 ...
- svn部署-linux
Svn作用 Subversion是一个自由/开源的版本控制系统,一组文件存放在中心版本库,记录每一次文件和目录的修改,Subversion允许把数据恢复到早期版本,或是检查数据修改的历史,Subver ...
- redis主从复制读写分离
主从复制,读写分离 Master/Slave 是什么 master写入 slave读取 能干嘛 读写分离,更加安全,性能提升 怎么玩 一主二仆.薪火相传.反客为主 周明老师,能够把长篇大论总结的很精辟 ...
- appium+python 微信小程序的自动化
sudo kill -9 $(lsof -i:8889 -t) mitmweb -p 8889 -s addons.py mitmdump -q -p 8889 -s addons.py http: ...
- 【转】自动化框架中引入ExtentReport美化报告
本文链接:https://blog.csdn.net/qq_30353203/article/details/82023922一.先引入三个依赖包 <dependency> <gro ...
- uefi下如何启动linux?
1. 有两种方式 1.1 直接从uefi shell启动linux内核 1.2 从uefi shell启动grub,然后再从grub启动linux内核 2. 需要哪些东西? 2.1 linux内核 2 ...
- Android平台云端打包证书使用说明
原贴:https://ask.dcloud.net.cn/article/35985 Android平台云端打包证书使用说明 分类:HBuilderX 证书 Android 签名证书是一个应用的所有者 ...
- canvas固定画布
canvas作为非常方便的HTML绘图工具在web端的应用是非常多了. 那么会碰到一个问题,开始绘图的时候,网页总是晃动. 怎么办呢?只需在获取鼠标(触点)移动坐标的时候,添加清除默认动作就可以了. ...