1.1 Key
1.2 Programación Código
1.1 Key
Nota: jdk8 tiene en orden con las expresiones lambda
En esta sección se describe brevemente el uso de las expresiones lambda, se refiere a los casos de uso específicos 2-15
El uso de las expresiones lambda, se refiere a la clase de prueba VerSionTestF
1.2 Programación Código
Mercancías misma clase entidad :( 2-3)
:( misma clase de enumeración 2-3)
Clase de las mercancías:
Pena de paquete para com.imooc.zhangxiaoxi.lambda.cart; Importación java.util.ArrayList; Importación java.util.List; pública clase CartService { / ** * clases internas anónimas, existe el riesgo de pérdida de memoria, no hace referencia a los proyectos de producción, pero para respaldar la expresión lambda referencias * / privada lista estática <Sku> = skuList nueva nueva ArrayList <Sku> () {{Add ( nueva SKU (2.020.001, "vehículos aéreos no tripulados", 999.00,1,999.00 , SkuCategoryEnum.ELECTRONICS)); la opción Agregar ( nueva SKU (2.020.002, "la camiseta", 50.00,2,100.00 , SkuCategoryEnum.CLOTHING)); el Add ( nueva SKU (2.020.003, "Of Human Bondage", 30.00,1,30.00 , SkuCategoryEnum.BOOKS)); el Add ( nueva nueva SKU (2020004, "viejo", 20.00,1,20.00 , SkuCategoryEnum.BOOKS)); el Add (
(); para(SKU SKU: skuList) { IF (. Sku.getSkuCategory () los equals (SkuCategoryEnum.ELECTRONICS)) {lElectronicsList.add (SKU);}} / * for (int i = 0; I <skuList.size (); I ++ ) {SI (skuList.get (I) .getSkuCategory () los iguales (SkuCategoryEnum.ELECTRONICS)) {lElectronicsList.add (skuList.get (I)) ;.}} * / retorno lElectronicsList;} / ** * * versionTestB sola dimensiones parámetros de condición de la enumeración de entrada diferente, imprimir una lista de los diferentes productos * * Tenga en cuenta que el segundo argumento: cómo la transferencia de parámetros de clase de enumeración * * * @ param skuList * @return * / pública lista estática <Sku> filterSkuListByParam (List <Sku> skuList, skuCategoryEnum skuCategoryEnum) {List <Sku> = lElectronicsList nueva nueva ArrayList <Sku> (); for (0 = I int; I <skuList.size (); I ++ ) { IF (skuList.get (I) .getSkuCategory () los equals (skuCategoryEnum)) {lElectronicsList.add (skuList.get (I)) ;.}} retorno lElectronicsList;} / ** * versionTestC * * * huevo y un método puede ser uno de los parámetros se determina según dos parámetros, * * Si la bandera es cierto, tipo enumerado se determina, por lo demás de acuerdo con el precio total se determina * * @param skuList * @return * / pública lista estática <Sku> filterSkuListByParamB (List <Sku> skuList, skuCategoryEnum skuCategoryEnum, dTotalPrice doble, Boole En Bandera) {List <Sku> = lElectronicsList nueva nueva ArrayList <Sku> (); for ( int i = 0; I <skuList.size (); I ++ ) { if ((&& En Flag. SkuList.get (I) .getSkuCategory () los iguales (skuCategoryEnum)) || .getTotalPrice ()> (&& skuList.get En la bandera (I!) DTotalPrice)) {lElectronicsList.add (skuList.get (I));}} regreso lElectronicsList;} / ** * * versionTestD tal enfoque no es recomendable para la producción, la clase va a causar una explosión. Todo para la expresión lambda se introduce * * @ param skuList * @return * / pública lista estática <Sku> filterSkuListByParamPrediCate (List <Sku> skuList, SkuPrediCate skuPrediCate) {List <Sku> = lElectronicsList nueva nueva ArrayList <Sku> (); para ( int i = 0; I <skuList.size (); I ++ ) { IF (skuPrediCate.test (skuList.get (I))) {lElectronicsList.add (skuList.get (I));lElectronicsList; }}
Predicado Interfaz:
Paquete com.imooc.zhangxiaoxi.lambda.cart; / ** * verbo interfaces de * / público interfaz SkuPrediCate { booleana prueba (SKU SKU);}
categorías de prueba:
empaquetar com.imooc.zhangxiaoxi.lambda.cart; importación com.alibaba.fastjson.JSON; importación org.junit.Test; importación java.util.List; público de clase VersionTestF { @test pública vacío filterSkuListByParam () { Lista <Sku> skuList = CartService.getSkuList (); / ** *使用lambda表达式查询总价大于1000的 * / Lista <Sku> getParamSkuList = CartService.filterSkuListByParamPrediCate (skuList, (SKU SKU) -> sku.getTotalPrice ()> 1000 ) ; System.out.println (JSON.toJSONString (getParamSkuList, verdadera )); } }
Imprimir registro:
[
{
"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 }] Proceso terminó con código de salida 0