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<? 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]]
以上这篇java 实现多个list 合并成一个去掉重复的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
intellij idea隐藏.iml和.idea等自动生成文件的问题
这篇文章主要介绍了intellij idea隐藏.iml和.idea等自动生成文件的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了(推荐)
这篇文章主要介绍了IntelliJ IDEA远程Debug Linux的Java程序,找问题不要只会看日志了,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
Java 数据库时间返回前端显示错误(差8个小时)的解决方法
本文主要介绍了Java 数据库时间返回前端显示错误(差8个小时)的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-08-08


最新评论