streamset 数据合并_java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来...

本文演示了如何使用Java8的Lambda表达式和Stream API将两个包含SkillUpgrade对象的列表合并成一个Map,并实现数据合并。通过示例代码展示了如何避免重复并更新列表中对象的属性。
摘要由CSDN通过智能技术生成

java8 lambda小试牛刀,利用Stream把list转map,并将两个list的数据对象合并起来

public static void main(String[] args) {

// 集合1

List lists = new ArrayList<>();

SkillUpgrade s = new SkillUpgrade();

s.setLv(1);

s.setAppearNum(100);

lists.add(s);

SkillUpgrade s2 = new SkillUpgrade();

s2.setLv(2);

s2.setAppearNum(200);

lists.add(s2);

// 集合1

List listx = new ArrayList<>();

SkillUpgrade x = new SkillUpgrade();

x.setLv(1);

x.setSelectNum(1100);

listx.add(x);

SkillUpgrade x2 = new SkillUpgrade();

x2.setLv(2);

x2.setSelectNum(1200);

listx.add(x2);

// 把list转map,{k=lv,vaule=并为自身} . SkillUpgrade->SkillUpgrade或Function.identity()

Map map = listx.stream()

.collect(Collectors.toMap(SkillUpgrade::getLv, SkillUpgrade -> SkillUpgrade));

System.out.println("map:="+map);

// 合并

lists.forEach(n -> {

// 如果等级一致

if (map.containsKey(n.getLv())) {

SkillUpgrade obj = map.get(n.getLv());

// 把数量复制过去

n.setSelectNum(obj.getSelectNum());

}

});

System.out.println("lists:="+lists);

// 重复问题

Map keyRedo = listx.stream()

.collect(Collectors.toMap(SkillUpgrade::getLv, Function.identity(), (key1, key2) -> key2));

// 方式二:指定实例的map

Map linkedHashMap = listx.stream().collect(Collectors.toMap(SkillUpgrade::getLv,

SkillUpgrade -> SkillUpgrade, (key1, key2) -> key2, LinkedHashMap::new));

}

/**

* output:map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]}

* lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]]

*/

输出结果:

map:={1=SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=null], 2=SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=null]} lists:=[SkillUpgrade [skillId=null, skillName=null, lv=1, persNum=null, selectNum=1100, appearNum=100], SkillUpgrade [skillId=null, skillName=null, lv=2, persNum=null, selectNum=1200, appearNum=200]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值