美文网首页
BiConsumer,ImmutableList,Immutab

BiConsumer,ImmutableList,Immutab

作者: 用户zzzzzz | 来源:发表于2023-11-30 11:38 被阅读0次

导入依赖

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>30.0-jre</version>
</dependency>
 <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
</dependency>

1.使用

import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;

public class UtilsNew {


    private static final List<BiConsumer<AssetInfoRequestVO.AssetInfo.Pair, AssetInfoPO>> PARM_LIST
            = ImmutableList.of(
            (pair, assetInfoPO) -> assetInfoPO.setParam1(JsonUtil.beanToJson(pair)),
            (pair, assetInfoPO) -> assetInfoPO.setParam2(JsonUtil.beanToJson(pair)),
            (pair, assetInfoPO) -> assetInfoPO.setParam3(JsonUtil.beanToJson(pair)),
            (pair, assetInfoPO) -> assetInfoPO.setParam4(JsonUtil.beanToJson(pair)),
            (pair, assetInfoPO) -> assetInfoPO.setParam5(JsonUtil.beanToJson(pair))
    );

    public static void main(String[] args) {

        /**
         ImmutableList是一个不可变、线程安全的列表集合,它只会获取传入对象的一个副本。不允许null值,不可变集合
         结果:  [a, b, c, d]
         */
        List<String> list = ImmutableList.of("a", "b", "c", "d");
        System.out.println(list);


       /* java.util.function.BiConsumer是一个Java 8功能接口。
        BiConsumer不返回值,它接受两个参数作为参数。
        BiConsumer的功能方法是accept(Object, Object)。
        结果:Key:面积 Value:123
        */
        BiConsumer<String, String> biConsumer = (key, value) ->
                System.out.println("Key:" + key + " Value:" + value);
        biConsumer.accept("面积", "123");


        List<AssetInfoRequestVO.AssetInfo.Pair> fieldList = new ArrayList<>();

        AssetInfoRequestVO.AssetInfo.Pair t1 = new AssetInfoRequestVO.AssetInfo.Pair();
        t1.setLable("车牌号");
        t1.setValue("浙100000");
        AssetInfoRequestVO.AssetInfo.Pair t2 = new AssetInfoRequestVO.AssetInfo.Pair();
        t2.setLable("价格");
        t2.setValue("100000元");
        fieldList.add(0, t1);
        fieldList.add(1, t2);

        //组装参数
        AssetInfoPO result = AssetInfoPO.builder().id(11).code("汽车").build();
        for (int i = 0; i < fieldList.size(); i++) {
            PARM_LIST.get(i).accept(fieldList.get(i), result);
        }
        System.out.println(JsonUtil.beanToJson(result));

        /*ImmutableMap.of(k1,v1,k2,v2)直接添加键值对,不需要像map一样还得一个一个put进去,
        如果只用一次的话,可以直接用ImmutableMap.of(k1,v1,k2,v2)当map参数传入方法中,省去新建map对象这一步
        of 方法入参最多只能有 5 对
        */
        ImmutableMap<String, String> map = ImmutableMap.of("参数1", "value1", "参数2", "value2");
        System.out.println(map.toString());
    }

}

2.结果

[a, b, c, d]
Key:面积 Value:123
{"id":11,"code":"汽车","param1":"{\"lable\":\"车牌号\",\"value\":\"浙100000\"}","param2":"{\"lable\":\"价格\",\"value\":\"100000元\"}","param3":null,"param4":null,"param5":null}
{参数1=value1, 参数2=value2}

3.AssetInfoRequestVO 对象

import lombok.Data;
import java.util.List;
public class AssetInfoRequestVO {
    List<AssetInfo> familyAssetInfoList;
    @Data
    public static class AssetInfo{
        /**
         * 资产类别代码
         */
        private  Integer code;
        /**
         * 资产属性列表
         */
        private List<AssetInfoRequestVO.AssetInfo.Pair>pairList;
        @Data
        public static class Pair{
            /**
             * 资产属性名称
             */
            private  String lable;
            /**
             * 资产属性值
             */
            private  String value;
        }
    }
}

相关文章

网友评论

      本文标题:BiConsumer,ImmutableList,Immutab

      本文链接:https://www.haomeiwen.com/subject/zxrqgdtx.html