効率的な別れ996、効率的な戦闘をプログラミングドアを開ける2-5のjava:多次元パラメトリック条件

1.1キー

1.2プログラミングコード

 

 

1.1キー

思考の新しい方法:(デモを見ることができるパラメータの一つは、2つのパラメータに応じて決定される方法をすることができます

 

 

1.2プログラミングコード

要件:

パラメータのいずれか1つの方法は、二つのパラメータに応じて決定することができます

 

コモディティ同じエンティティクラス:( 2-3)

 

製品のクラス:(参照filterSkuListByParamBの方法を)

以下のためのパッケージ変更com.imooc.zhangxiaoxi.lambda.cart; 

インポートはjava.util.ArrayList;
 インポートはjava.util.List; 

パブリック クラスCartService { 

    / ** 
     *匿名内部クラス、メモリリークのリスク、生産プロジェクトが参照されていないが、そこにあるが、ラムダ式の参照をバックアップする
     * / 
    プライベート 静的の一覧<SKU> = skuList 新しい新しいのArrayList <SKU> (){ 
        { 
            追加(新新 SKU(2020001、 "UAV"、999.00,1,999.00 、SkuCategoryEnum.ELECTRONICS)); 
            追加(新しい新しい SKU(2020002、 "Tシャツ" 50.00,2,100.00 、SkuCategoryEnum.CLOTHING)); 
            追加(新しい新しい "人間の絆" SKU(2020003、30.00,1,30.00、SkuCategoryEnum.BOOKS)); 
            追加(新新 SKU(2020004、 "オールド・マン"、20.00,1,20.00 、SkuCategoryEnum.BOOKS)); 
            追加(新新 SKU(2020005、288.00,1,288.00 "安全性と効率的なプログラミングを証明します" 、 SkuCategoryEnum.BOOKS)); 
            追加(新新 SKU(2020006、 "バルク靴"、300.00,1,300.00 、SkuCategoryEnum.CLOTHING)); 
            追加(新新 SKU(2020007、 "バーベル"、2000.00,1,2000.00 、SkuCategoryEnum.SPROTS)) ; 
            追加(新新 SKU(2020008、 "ThinkPad機能"、5000.00,1,5000.00 、SkuCategoryEnum.ELECTRONICS)); 
        } 

    }; 

    パブリック 静的リスト<SKU>getSkuList(){
        リターンskuList; 
    } 

    / ** 
     * versionTestA 
     *ショッピングカートを見つけ、すべての電子製品
     * 
     *ループのためのノート
     (SKU SKU:skuList)のための*を使用
     * @return 
     * / 
    パブリック 静的リスト<SKU> getElectronicsSkuList(一覧<SKU> skuList){ 
        リスト <SKU> = lElectronicsList 新しい新規のArrayList <SKU> ();
         のため(SKU SKU:skuList){
            IF (sku.getSkuCategory()に等しい(SkuCategoryEnum.ELECTRONICS)){。
                lElectronicsList.add(SKU); 
            } 
        } 
/ *
        用(INT I = 0; I <skuList.size(); I ++){ 
            IF(skuList.get(I).getSkuCategory()に等しい(SkuCategoryEnum.ELECTRONICS)){ 
                lElectronicsList.add(skuList.get(I)) ; 
            } 
        } 
* / 
        戻りlElectronicsList; 
    } 

    / ** 
     * versionTestB 
     *単一次元パラメトリック条件、異なる列挙が経過し、異なる製品のリストをプリントアウト
     * 
     *なお、第2のパラメータ:方法列挙クラスパラメータ検索
     * 
     * 
     * @param skuList 
     * @return 
     * / 
    パブリック 静的リスト<SKU> filterSkuListByParam(一覧<SKU> skuList、skuCategoryEnum skuCategoryEnum){ 
        リスト<SKU> = lElectronicsList 新しい新規のArrayList <SKU> ();
         のためのINT I = 0; I <skuList.size(); I ++ ){
             IF (SkuList.get(I).getSkuCategory()に等しい(skuCategoryEnum)){ 
                lElectronicsList.add(skuList.get(I)); 
            } 
        } 
        戻りlElectronicsListを; 
    } 


    / ** 
     * versionTestC 
     *、次いで卵
     * 
     *二つのパラメータに応じてパラメータを決定する方法のいずれかとすることができる
     * 
     フラグ片に従い、該当する場合*クラスを決定するために、それ以外の場合は、合計金額に応じて決定される
     * 
     * @param skuList 
     * @return 
     * / 
    パブリック 静的リスト<SKU> filterSkuListByParamB(一覧<SKU> skuList、SkuCategoryEnum skuCategoryEnum、ダブルdTotalPrice、ブーリアンフラグ){ 
        リスト <SKU> lElectronicsList = 新規のArrayList <SKU> ();
        以下のためにINT iは= 0; I <skuList.size(); I ++ ){
             もし、((フラグ&& skuList.get(I).getSkuCategory()に等しい(skuCategoryEnum))
                 || フラグ&& skuList.get(I)!。 getTotalPrice()> dTotalPrice)){ 
                lElectronicsList.add(skuList.get(I))。
            } 
        } 
        リターンlElectronicsList; 
    } 



    / ** 
     * versionTestD 
     *クラスが爆発の原因となります、生産上のようなアプローチをお勧めしません。すべてのラムダ式が導入される
     * 
     * @param skuList 
     * @return 
     * / 
    パブリック 静的リスト<SKU> filterSkuListByParamPrediCate(一覧<SKU> skuList、SkuPrediCate skuPrediCate){ 
        リスト <SKU> = lElectronicsList 新しい新規のArrayList <SKU> ();
         INT I = 0; I <skuList.size(); I ++ ){
             IF (skuPrediCate.test(skuList.get(I))){ 
                lElectronicsList.add(skuList.get(I)); 
            }
        }
        返すlElectronicsListを。
    } 



}

 

 

:(同じ列挙クラス2-3)

 

テストカテゴリ:

パッケージcom.imooc.zhangxiaoxi.lambda.cart。

輸入com.alibaba.fastjson.JSON;
輸入org.junit.Test; 

輸入はjava.util.List; 

パブリック クラスVersionTestC { 

    @Test 
   公共 ボイドfilterSkuListByParam(){ 
       リスト <SKU> skuList = CartService.getSkuList()。
       / * リスト<SKU> getParamSkuList = CartService.filterSkuListByParamB(skuList、SkuCategoryEnum.BOOKS、NULL、TRUE)。
       System.out.println(JSON.toJSONString(getParamSkuList、真)); * / 

        リスト <SKU> getParamSkuList = CartService.filterSkuListByParamB(skuList、ヌル、200.00、偽の); 
        System.out.println(JSON.toJSONString(getParamSkuList、)); 

   } 

}

 

 

ログを出力します:

[ 
    {
         "skuCategory": "エレクトロニクス"  "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":"エレクトロニクス」 "SKUID":2020008  "skuName": "ThinkPadの"  "skuPrice":5000。0  "TOTÁLNÍ":1  "totalPrice":5000.0  
    }
]
 
プロセス終了コードで終了 0

 

おすすめ

転載: www.cnblogs.com/1446358788-qq/p/12610131.html