zoukankan      html  css  js  c++  java
  • 高效 告别996,开启java高效编程之门 3-17实战案例预定义收集器

    1    重点:

    1.1  Collectors方法之 流转集合,分组,分区的案例应用

     

    2    demo之流转集合(toCollectors):

    demo:

    /**
         * toList
         * 案例1:流转换为集合
         * 注意:可以用Collectors.toList /toSet/ toMap 等转换成不同的集合
         * */
        @Test
        public void toListTest(){
            List<Sku> list = CartService.getSkuList();
            List<Sku> list2 = list.stream().filter(Sku->Sku.getTotalPrice()>1000).collect(Collectors.toList());
            System.out.println(JSONObject.toJSONString(list2,true));
        }

    打印日志:

    [
        {
            "skuCategory":"SPROTS",
            "skuId":2020007,
            "skuName":"杠铃",
            "skuPrice":2000.0,
            "totalNum":1,
            "totalPrice":2000.0
        },
        {
            "skuCategory":"ELECTRONICS",
            "skuId":2020008,
            "skuName":"ThinkPad",
            "skuPrice":5000.0,
            "totalNum":1,
            "totalPrice":5000.0
        }
    ]
    
    Process finished with exit code 0
    3    demo之分组(groupingBy):

    demo:

      /**
         * groupingBy
         * 案例2:根据产品种类分组
         * 注意:map的定义
         */
        @Test
        public void groupTest(){
            List<Sku> list = CartService.getSkuList();
            Map<Object,List<Sku>> map = list.stream().collect(Collectors.groupingBy(Sku::getSkuCategory));
            System.out.println(JSONObject.toJSONString(map,true));
        }

    打印日志:

    {"CLOTHING":[
            {
                "skuCategory":"CLOTHING",
                "skuId":2020002,
                "skuName":"T-shirt",
                "skuPrice":50.0,
                "totalNum":2,
                "totalPrice":100.0
            },
            {
                "skuCategory":"CLOTHING",
                "skuId":2020006,
                "skuName":"大头皮鞋",
                "skuPrice":300.0,
                "totalNum":1,
                "totalPrice":300.0
            }
        ],"BOOKS":[
            {
                "skuCategory":"BOOKS",
                "skuId":2020003,
                "skuName":"人生的枷锁",
                "skuPrice":30.0,
                "totalNum":1,
                "totalPrice":30.0
            },
            {
                "skuCategory":"BOOKS",
                "skuId":2020004,
                "skuName":"老人与海",
                "skuPrice":20.0,
                "totalNum":1,
                "totalPrice":20.0
            },
            {
                "skuCategory":"BOOKS",
                "skuId":2020005,
                "skuName":"剑指高效编程",
                "skuPrice":288.0,
                "totalNum":1,
                "totalPrice":288.0
            }
        ],"SPROTS":[
            {
                "skuCategory":"SPROTS",
                "skuId":2020007,
                "skuName":"杠铃",
                "skuPrice":2000.0,
                "totalNum":1,
                "totalPrice":2000.0
            }
        ],"ELECTRONICS":[
            {
                "skuCategory":"ELECTRONICS",
                "skuId":2020001,
                "skuName":"无人机",
                "skuPrice":999.0,
                "totalNum":1,
                "totalPrice":999.0
            },
            {
                "skuCategory":"ELECTRONICS",
                "skuId":2020008,
                "skuName":"ThinkPad",
                "skuPrice":5000.0,
                "totalNum":1,
                "totalPrice":5000.0
            }
        ]
    }
    
    Process finished with exit code 0
    4    demo之分区(partitioningBy):

    demo:

    @Test
        /**
         * partitioningBy
         * 案例3:根据总价是否大于100进行分区
         * 分区是分组的一种特殊形式,根据特定的条件为true或者为否分为两组
         */
        public void partitioningByTest(){
            List<Sku> list = CartService.getSkuList();
            Map<Boolean,List<Sku>> map = list.stream().collect(Collectors.partitioningBy(Sku->Sku.getTotalPrice()>100));
            System.out.println(JSONObject.toJSONString(map,true));
        }

     

    打印日志:

    {false:[
            {
                "skuCategory":"CLOTHING",
                "skuId":2020002,
                "skuName":"T-shirt",
                "skuPrice":50.0,
                "totalNum":2,
                "totalPrice":100.0
            },
            {
                "skuCategory":"BOOKS",
                "skuId":2020003,
                "skuName":"人生的枷锁",
                "skuPrice":30.0,
                "totalNum":1,
                "totalPrice":30.0
            },
            {
                "skuCategory":"BOOKS",
                "skuId":2020004,
                "skuName":"老人与海",
                "skuPrice":20.0,
                "totalNum":1,
                "totalPrice":20.0
            }
        ],true:[
            {
                "skuCategory":"ELECTRONICS",
                "skuId":2020001,
                "skuName":"无人机",
                "skuPrice":999.0,
                "totalNum":1,
                "totalPrice":999.0
            },
            {
                "skuCategory":"BOOKS",
                "skuId":2020005,
                "skuName":"剑指高效编程",
                "skuPrice":288.0,
                "totalNum":1,
                "totalPrice":288.0
            },
            {
                "skuCategory":"CLOTHING",
                "skuId":2020006,
                "skuName":"大头皮鞋",
                "skuPrice":300.0,
                "totalNum":1,
                "totalPrice":300.0
            },
            {
                "skuCategory":"SPROTS",
                "skuId":2020007,
                "skuName":"杠铃",
                "skuPrice":2000.0,
                "totalNum":1,
                "totalPrice":2000.0
            },
            {
                "skuCategory":"ELECTRONICS",
                "skuId":2020008,
                "skuName":"ThinkPad",
                "skuPrice":5000.0,
                "totalNum":1,
                "totalPrice":5000.0
            }
        ]
    }
    
    Process finished with exit code 0
  • 相关阅读:
    HTML5_音视频标签 <audio> 和 <video>
    HTML5_提供的 新功能_less 编译_
    HTML5_新标签
    CSS3_综合案例
    CSS3_元素拖曳原理_设置全局点击捕获_九宫格碰撞检测_自定义滚动条
    CSS3_移动端_开机动画
    CSS3_动画 animation
    剑指Offer-2.替换空格(C++/Java)
    MySQL学习笔记4——DQL
    MySQL学习笔记3——DCL
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12812386.html
Copyright © 2011-2022 走看看