导入依赖
<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;
}
}
}
网友评论