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


細節決定成敗!
個人愚見,如有不對,懇請扶正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM