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

本文演示如何使用Java 8的Stream API将两个List集合转换并合并到一个Map中,具体步骤包括创建两个SkillUpgrade对象列表,通过stream()方法结合collectors工具类将第一个列表转换成Map,然后遍历第二个列表进行数据合并。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


public static void main(String[] args) {
		// 集合1
		List<SkillUpgrade> 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<SkillUpgrade> 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<Integer, SkillUpgrade> 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<Integer, SkillUpgrade> keyRedo = listx.stream()
				.collect(Collectors.toMap(SkillUpgrade::getLv, Function.identity(), (key1, key2) -> key2));
		// 方式二:指定实例的map
		Map<Integer, SkillUpgrade> 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]]

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值