温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

利用java 实现合并多个list 并去重

发布时间:2020-11-06 17:25:41 来源:亿速云 阅读:1462 作者:Leah 栏目:开发技术

利用java 实现合并多个list 并去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

 public static void main(String[] args){
    List<Integer> list1 = new ArrayList<Integer>();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list1.add(4);
    List<Integer> list2 = new ArrayList<Integer>();
    list2.add(1);
    list2.add(4);
    list2.add(7);
    list2.add(10);
    List<Integer> listAll = new ArrayList<Integer>();
    listAll.addAll(list1);
    listAll.addAll(list2);
    listAll = new ArrayList<Integer>(new LinkedHashSet<>(listAll));
    System.out.println(listAll);
  }

输出:

[1, 2, 3, 4, 7, 10]

代码要典:

1、合并 使用java.util.List.addAll(Collection<&#63; extends Integer>)

2、去重,借助LinkedHashSet

补充知识: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]]

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI