问题描述
- 两个list去重并合并的问题
- 有两个List list1 list2
list1 : [10583601 10584601]
list2 : [10583601 10583611]
每个元素前7位为标识位 最后一位为数量
以list1位基础 如果list2中的元素在list1中存在 则修改list1中的数量 (比如10583601在list1中存在
也在list2中存在 则把list1中的10583601改为10583602).如果不存在则往list1中添加该元素最后得出的结果应该是 list1 [10583602 10584601 10583611]
求教
解决方案
? 前些日子在做项目时,做到两个大LIST合并的问题,由于时间比较紧没有时间仔细琢磨一下效率问题。刚好从CSDN的论坛上看到此问题。?? 有两个LIST????? ArrayList <Integer> list1=new? ArrayList <Integer>();?&n......
答案就在这里:两个LIST合并问题
解决方案二:
有人吗 求教啊 .
解决方案三:
- 遍历list2中数据 将数据存储到map中 key为list2中的数据 value为key在list2中出现的次数
- 遍历map中的数据 如果map的key存在list1中 那么将这个数的最后一位改为map的value+1 如果不存在将key值添加到list1中例如:
list1 : [10583601 10584601]
list2 : [10583601 10583611]
那么第一步获取的map为{[10583601: 1] [10583611:1]}
第二步:发现10583601存在list1中那么修改最后一位1为2 10583611不存在list1中 添加到list1中
最终结果:
list1 [10583602 10584601 10583611]
解决方案四:
ArrayList newList=new ArrayList ();
ArrayList newList2=new ArrayList ();
ArrayList newList3=new ArrayList ();
newList2.add(010583601"");
newList2.add(110584601"");
newList3.add(010583601"");
newList3.add(110583611"");
for(int i = 0; i < newList3.size(); i++) { //判断newList2中有没有newList2里重复数据,true:将原来删除,修改+1库存 false:直接add //假设你这里的库存数量是 2+2 =4的要求,取消掉注释,将原来注释掉 if(newList2.contains(newList3.get(i))) { String test = newList3.get(i); int t=Integer.parseInt(test); newList2.remove(test); newList2.add(String.valueOf(t+1)); //int s=Integer.parseInt(test.substring(test.length()-1test.length())); //newList2.add(String.valueOf(t+s)); }else { newList2.add(newList3.get(i)); } } newList.addAll(newList2); for (String list :newList) { System.out.println(list); }