1    重点

1.1  3个demo的使用

1.2  anyMatch 中关于 大于n元打印的实际应用场景

 

 

 

2     Demo之anyMatch:

demo:

 /**
     * anyMatch 有任一满足的,则停止继续操作,短路操作
     * 需求:如果商品中有任一 大于 n 元的则,打印查出来该商品名称,否则,返回false*/
    @Test
    public void anyMatchTest(){
        Double price = 2000.00;
        Boolean flag = list.stream().anyMatch(Sku->Sku.getTotalPrice()<price);
        System.out.println(flag);
        if(flag){
            //List<Sku> list2 = list.stream().filter(Sku->Sku.getTotalPrice()<200).collect(Collectors.toList());
            list.stream()
                    .filter(Sku->Sku.getTotalPrice()<price)
                    .map(Sku::getSkuName)
                    .forEach(item->System.out.println(JSONObject.toJSONString(item,true)));
        }
    }

 

打印日志:

 

true
"无人机"
"T-shirt"
"人生的枷锁"
"老人与海"
"剑指高效编程"
"大头皮鞋"

Process finished with exit code 0

 

 

 

 

 

 

3     Demo之allMatch

 

demo:

 /**
     * allMatch 有任一不满足的,则停止继续操作,短路操作
     */
    @Test
    public void allMatch(){
        Boolean bFlag = list.stream().peek(Sku->System.out.println(Sku.getSkuName())).allMatch(Sku->Sku.getTotalPrice()<2000);
        System.out.println(bFlag);
    }

 

打印日志:

无人机
T-shirt
人生的枷锁
老人与海
剑指高效编程
大头皮鞋
杠铃
false

Process finished with exit code 0

 

 

 

 

 

 

4     Demo之noneMatch

 

demo:

    /**
     * noneMatch 都不满足为true,有任一满足到的为false,短路操作
     */
    @Test
    public void noneMatch(){
        System.out.println(list.stream().peek(Sku->System.out.println(Sku.getSkuName())).noneMatch(Sku->Sku.getTotalPrice()<2000));
    }

 

 


 

打印日志:

无人机
false

Process finished with exit code 0

 

posted on 2020-04-25 17:17  菜鸟乙  阅读(165)  评论(0编辑  收藏  举报