您的位置:首页技术文章
文章详情页

java 实现多个list 合并成一个去掉重复的案例

【字号: 日期:2022-08-26 09:18:06浏览:8作者:猪猪

我就废话不多说了,大家还是直接看代码吧~

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<? extends Integer>)

2、去重,借助LinkedHashSet

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

我就废话不多说了,大家还是直接看代码吧~

public static void main(String[] args) {// 集合1List<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);// 集合1List<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));// 方式二:指定实例的mapMap<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]]

以上这篇java 实现多个list 合并成一个去掉重复的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持好吧啦网。

标签: Java
相关文章: