• 高效 告别996,开启java高效编程之门 3-2传统方式处理业务逻辑


    1    重点

    1.1    对sort方法使用的理解

     

     

    2    代码演练

    需求:

     根据第一章需求,女盆友提出需求
    * 1 打印所有商品
    * 2 图书类的商品一定给买
    * 3 最贵的买两件
    * 4 打印最贵的两件商品的名称和总价


    测试类:

    package com.imooc.zhangxiaoxi.stream;
    
    import com.alibaba.fastjson.JSON;
    import com.imooc.zhangxiaoxi.lambda.cart.CartService;
    import com.imooc.zhangxiaoxi.lambda.cart.Sku;
    import com.imooc.zhangxiaoxi.lambda.cart.SkuCategoryEnum;
    import org.junit.Test;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Comparator;
    import java.util.List;
    
    /**
     * StreamVs
     *
     * @author 魏豆豆
     * @date 2020/4/7
     */
    public class StreamVs {
    
        /**
         * 流和普通方法对比,本节应用普通方法
         *
         * 根据第一章需求,女盆友提出需求
         * 1    打印所有商品
         * 2    图书类的商品一定给买
         * 3    最贵的买两件
         * 4    打印最贵的两件商品的名称和总价
         */
    
        /**
         * 普通方法
         */
        @Test
        public void oldCartHandle(){
            //1 打印所有商品
            List<Sku> skuList = CartService.getSkuList();
            System.out.println("====================================================================================================");
            for(Sku sku: skuList){
                System.out.println(JSON.toJSONString(sku,true));
            }
    
    
            //2 排除图书类
            List<Sku> skuListNoBooks = new ArrayList<Sku>();
            for(Sku sku:skuList){
                if(!sku.getSkuCategory().equals(SkuCategoryEnum.BOOKS)){
                    skuListNoBooks.add(sku);
                }
            }
    
            //3 最贵的买两件
            skuListNoBooks.sort(new Comparator<Sku>() {
                @Override
                public int compare(Sku o1, Sku o2) {
                    if(o1.getTotalPrice()> o2.getTotalPrice()){
                        return -1;
                    }else if(o1.getTotalPrice() < o2.getTotalPrice()){
                        return 1;
                    }else{
                        return 0;
                    }
                }
            });
    
            List<Sku> skuListPreTwo = new ArrayList<Sku>();
            for(int i = 0;i<2;i++){
                skuListPreTwo.add(skuListNoBooks.get(i));
            }
    
            System.out.println("====================================================================================================");
            Double totalPrice = 0.0;
            for(Sku sku:skuListPreTwo){
                totalPrice+=sku.getTotalPrice();
            }
    
            List<String> skuNameList = new ArrayList<String>();
            for (Sku sku:skuListPreTwo){
                skuNameList.add(sku.getSkuName());
            }
    
    
            System.out.println("商品总价为:"+totalPrice);
            System.out.println("商品名称为:"+ JSON.toJSONString(skuNameList,true));
        }
    
    
    
    }
    
    
    

    其他类参考2-3:

    打印日志:

    D:javajdkjdk9jdk-9+181_windows-x64_rijava-se-9-rijdk-9injava.exe -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4libidea_rt.jar=35416:D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4in" -Dfile.encoding=UTF-8 -classpath "D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4libidea_rt.jar;D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4pluginsjunitlibjunit-rt.jar;D:javadevolopKitideaanZhIntelliJ IDEA Community Edition 2018.1.4pluginsjunitlibjunit5-rt.jar;F:xiangmu3Xin	est996	arget	est-classes;F:xiangmu3Xin	est996	argetclasses;F:xiangmu3Xin	est996libcomgoogleguavaguava28.2-jreguava-28.2-jre.jar;F:xiangmu3Xin	est996libcomgoogleguavafailureaccess1.0.1failureaccess-1.0.1.jar;F:xiangmu3Xin	est996libcomgoogleguavalistenablefuture9999.0-empty-to-avoid-conflict-with-guavalistenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;F:xiangmu3Xin	est996libcomgooglecodefindbugsjsr3053.0.2jsr305-3.0.2.jar;F:xiangmu3Xin	est996liborgcheckerframeworkchecker-qual2.10.0checker-qual-2.10.0.jar;F:xiangmu3Xin	est996libcomgoogleerrorproneerror_prone_annotations2.3.4error_prone_annotations-2.3.4.jar;F:xiangmu3Xin	est996libcomgooglej2objcj2objc-annotations1.3j2objc-annotations-1.3.jar;F:xiangmu3Xin	est996libjunitjunit4.12junit-4.12.jar;F:xiangmu3Xin	est996liborghamcresthamcrest-core1.3hamcrest-core-1.3.jar;F:xiangmu3Xin	est996libcomalibabafastjson1.2.58fastjson-1.2.58.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit3 com.imooc.zhangxiaoxi.stream.StreamVs,oldCartHandle
    ====================================================================================================
    {
        "skuCategory":"ELECTRONICS",
        "skuId":2020001,
        "skuName":"无人机",
        "skuPrice":999.0,
        "totalNum":1,
        "totalPrice":999.0
    }
    {
        "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
    }
    {
        "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
    }
    ====================================================================================================
    商品总价为:7000.0
    商品名称为:[
        "ThinkPad",
        "杠铃"
    ]
    
    Process finished with exit code 0
    
    
    
     
  • 相关阅读:
    springboot---Shiro
    spring MVC 使用 modelAndView.setViewName("forward:*.action") 发送重定向
    数据库负载均衡、读写分离技术
    redis详解
    分布式--锁
    springboot---数据整合篇
    hadoop安装单机
    NIO系列之MINA
    JAVA中IO流模型BIO,NIO,AIO
    CPU-bound(计算密集型) 和I/O bound(I/O密集型)
  • 原文地址:https://www.cnblogs.com/1446358788-qq/p/12651174.html
Copyright © 2020-2023  润新知