Java8 新特性 Stream 短路终端操作
短路终端操作
传入一个谓词,返回传为boolean,如果符合条件,则直接结束流。
匹配所有 allMatch
任意匹配 anymMatch
不匹配 noneMatch
查找首个 findFirst
查找任意 findAny
匹配所有 allMatch
//匹配所有 allMatch
@Test
public void allMatchTest() {
boolean b = list.stream()
//所有的商品价格都大于40
.allMatch(sku -> sku.getSkuPrice() > 40);
System.out.println(b);
/** 返回值
* true
*/
}
任意匹配 anymMatch
//任意匹配 anymMatch
@Test
public void anyMatchTest() {
boolean b = list.stream()
//只要有一个totalNum数量为3就反回true
.anyMatch(sku -> sku.getTotalNum() == 3);
System.out.println(b);
/** 输出的结果:
* true
*/
}
不匹配 noneMatch
//不匹配 noneMatch
@Test
public void noneMatchTest() {
boolean b = list.stream()
//没有totalNum为2的,所以返回值为true,
.noneMatch(sku -> sku.getTotalNum() == 2);
System.out.println(b);
/**
* 没有匹配才选true
*/
}
查找首个 findFirst
//查找首个 findFirst
@Test
public void findFirstTest() {
//我自己的Optional里面有介绍,,findFirst()方法,只要有第一个就返回
Optional<Sku> first = list.stream().findFirst();
//从Optional里面取出来值
Sku sku = first.get();
//比json格式输出结果
System.out.println(JSON.toJSONString(sku,true));
/**
* {
* "skuCategory":"ELECTRONICS",
* "skuId":100001,
* "skuName":"无人机",
* "skuPrice":4999.0,
* "totalNum":1,
* "totalPrice":4999.0
* }
*/
}
查找任意 findAny
//查找任意 findAny
@Test
public void findAnyTest() {
//从list中任意取出来一个
Optional<Sku> any = list.stream().findAny();
//从Optional里面取值
Sku sku = any.get();
//以json输出结果
System.out.println(JSON.toJSONString(sku, true));
/**
* {
* "skuCategory":"ELECTRONICS",
* "skuId":100001,
* "skuName":"无人机",
* "skuPrice":4999.0,
* "totalNum":1,
* "totalPrice":4999.0
* }
*/
}
细节决定成败!
个人愚见,如有不对,恳请扶正!
Java8 新特性 Stream 短路终端操作的更多相关文章
- Java8 新特性 Stream 非短路终端操作
非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大 ...
- Java8 新特性 Stream 无状态中间操作
无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 fil ...
- Java8 新特性之集合操作Stream
Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同 ...
- Java8 新特性 Stream() API
新特性里面为什么要加入流Steam() 集合是Java中使用最多的API,几乎每一个Java程序都会制造和处理集合.集合对于很多程序都是必须的,但是如果一个集合进行,分组,排序,筛选,过滤...这些操 ...
- 这可能是史上最好的 Java8 新特性 Stream 流教程
本文翻译自 https://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/ 作者: @Winterbe 欢迎关注个人微信公众 ...
- java8新特性--Stream的基本介绍和使用
什么是Stream? Stream是一个来自数据源的元素队列并可以进行聚合操作. 数据源:流的来源. 可以是集合,数组,I/O channel, 产生器generator 等 聚合操作:类似SQL语句 ...
- Java8新特性Stream流应用示例
Java8新特性介绍 过滤集合 List<String> newList = list.stream().filter(item -> item != null).collect(C ...
- Java8 新特性 Stream 练习实例
练习实例 配合Java8 新特性 Steam() API 使用 //没有写get set 构造方法 public class Sku { private Integer skuId; private ...
- Java8 新特性Stream 的学习和使用方法
流(Stream) 流是java 8 中新引入的特性,用来处理集合中的数据,Stream 是一个来自数据源的元素队列并支持聚合操作. Java 中 Stream 不会存储元素. 数据源 流的来源. 可 ...
随机推荐
- Spring循环依赖原因及如何解决
浅谈Spring解决循环依赖的三种方式 SpringBoot构造器注入循环依赖及解决 原文:https://www.baeldung.com/circular-dependencies-in-spri ...
- sparkstreaming 黑名单过滤
要用到transform and rdd.leftOuterJoin transform: 使 DStream 和 RDD 之间的类型进行了转换,然后可以进行调用 leftOuterJoin(左外连接 ...
- 其他综合-CentOS 7 使用二进制包搭建lnmp平台
CentOS 7 使用二进制包搭建lnmp平台 1.实验描述 通过二进制搭建 lnmp 平台,实现 web 环境基本部署 2.实验环境 虚拟机: 系统:CenOS 7.6 内存:2 G+ 数量:1台 ...
- 【Linux】-- 认识bash shell
一.前言 我们知道管理整个计算机硬件的其实是系统的内核,这个内核是需要被保护的,所以我们一般用户就只能通过shell来跟内核通信,以让内核达到我们所想要达到的工作.那么Linux系统有多少shell可 ...
- ArrayList对象声明& arrayList.size()
此程序用于测试 :每次for循环内重新定义一个Integer数组,赋值后加入arrayList.由于下一次的Integer对象重新定义,原来的对象是否会被释放? 解答:不会,因为原对象仍被引用(被ar ...
- R 基于朴素贝叶斯模型实现手机垃圾短信过滤
# 读取数数据, 查看数据结构 df_raw <- read.csv("sms_spam.csv", stringsAsFactors=F) str(df_raw) leng ...
- Ubuntu下搭建Kubernetes集群(4)--部署K8S Dashboard
K8S Dashboard是官方的一个基于WEB的用户界面,专门用来管理K8S集群,并可展示集群的状态.K8S集群安装好后默认没有包含Dashboard,我们需要额外创建它. 首先我们执行命令: wg ...
- day30_8.9 操作系统与并发编程
一.操作系统相关 1.手工操作 1946年第一台计算机诞生--20世纪50年代中期,计算机工作还在采用手工操作方式.此时还没有操作系统的概念. 这时候的计算机是由人为将穿孔的纸带装入输入机,控制台获取 ...
- python-读取txt文本
import tensorflow as tf import os with open('test_read.txt', 'r') as file: lines = file.readlines() ...
- Python进阶-XIII 导入模块和包 异常处理
一.模块的导入 1).import # 测试一:money与my_module.money不冲突 import my_module money=10 print(my_module.money) '' ...