Java8 新特性 Stream 短路终端操作

短路终端操作

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
     * }
     */
}

细节决定成败!

个人愚见,如有不对,恳请扶正!

原文地址:https://www.cnblogs.com/xdtg/p/12001005.html

时间: 2024-09-30 11:14:44

Java8 新特性 Stream 短路终端操作的相关文章

Java8 新特性 Stream 非短路终端操作

非短路终端操作 Java8 新特性 Stream 练习实例 非短路终端操作,就是所有的元素都遍厉完,直到最后才结束.用来收集成自己想要的数据. 方法有: 遍厉 forEach 归约 reduce 最大值 max 最小值 min 聚合 collect 计数 count 遍厉 forEach //遍厉 forEach @Test public void forEachTest() { list.stream() .forEach(iter -> //以json格式输出 System.out.prin

Java8 新特性之集合操作Stream

Java8 新特性之集合操作Stream Stream简介 Java 8引入了全新的Stream API.这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同. stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作,或者大批量数据操作. 为什么要使用Stream 函数式编程带来的好处尤为明显.这种代码更多地表达了业务逻辑的意图,而不是它的实现机制.易读的代码也易于维护.更可靠.更不容易出错. 高端 使用实例: 测试数据:

Java8 新特性 Stream 无状态中间操作

无状态中间操作 Java8 新特性 Stream 练习实例 中间无状态操作,可以在单个对单个的数据进行处理.比如:filter(过滤)一个元素的时候,也可以判断,比如map(映射)... 过滤 filter 映射 map 扁夹化 flatMap 遍厉 peek 过滤 filter 接收一个谓词断言,boolean Pridicate< T > 根据返回值类型来确定是否过滤这一条属性. // 过滤 filter @Test public void filterTest() { list.stre

java8 新特性 Stream

1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的Iterator.原始版本的Iterator,用户只能一个一

Java8新特性Stream API与Lambda表达式详解(1)

1 为什么需要Stream与Lambda表达式? 1.1  为什么需要Stream Stream作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream.Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggr

JAVA8新特性--集合流操作Stream

原文链接:https://blog.csdn.net/bluuusea/article/details/79967039 Stream类全路径为:java.util.stream.Stream 对Stream的描述,引用其他文章中觉得比较好的介绍: Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利.高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation).Strea

Java8新特性 --Stream

一. 创建Stream 创建Stream方式一: 集合类的stream()或 parallelStream() java List<String> list = new ArrayList<>(); Stream<String> stream = list.stream(); 创建Stream方式二: 通过Arrays中的静态方法stream()获取 String[] strings = new String[10]; Stream<String> stre

java8新特性——Stream

一.stream介绍 stream(流)是一个来自数据源的元素队列 集合讲的是数据,而流讲的是计算 注意: ①stream自己不会存储元素 ②stream不会改变源对象,相反他会返回一个持有结果的新stream ③stream操作是延时执行的,这意味着他们会等到需要结果的时候才执行 stream操作的三个步骤 ①创建stream //1.通过Collection 系列集合提供的stream()[串行流]或 [并行流]来生成流 List list = new ArrayList(); Stream

Java8新特性——stream流

一.基本API初探 package java8.stream; import java.util.Arrays; import java.util.IntSummaryStatistics; import java.util.List; import java.util.Random; import java.util.stream.Collectors; import java.util.stream.IntStream; /** * @author [email protected] * @