Java8 新特性 Stream 短路终端操作

Posted Frost Boy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
     * }
     */
}


细节决定成败!
个人愚见,如有不对,恳请扶正!

以上是关于Java8 新特性 Stream 短路终端操作的主要内容,如果未能解决你的问题,请参考以下文章

Java8新特性----Stream

java8新特性(Stream API)

Java8新特性:StreamAPI(超详解)

Java8 新特性之集合操作Stream

Java8新特性Lambda表达式&Stream流&方法引用最全集锦

Java8新特性--Stream流操作