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