2 elysion k elysion_k 于 2016.04.11 11:57 提问

两个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]

求教,

4个回答

CSDNXIAOC
CSDNXIAOC   2016.04.11 12:07

  前些日子在做项目时,做到两个大LIST合并的问题,由于时间比较紧没有时间仔细琢磨一下效率问题。刚好从CSDN的论坛上看到此问题。   有两个LIST      ArrayList <Integer> list1=new  ArrayList <Integer>(); &n......
答案就在这里:两个LIST合并问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

elysion_k
elysion_k   2016.04.11 13:20

有人吗, 求教啊 .

lbcab
lbcab   2016.04.11 13:48
  1. 遍历list2中数据, 将数据存储到map中, key为list2中的数据, value为key在list2中出现的次数
  2. 遍历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]

u013351145
u013351145   2016.04.11 14:47

ArrayList newList=new ArrayList ();
ArrayList newList2=new ArrayList ();
ArrayList newList3=new ArrayList ();
newList2.add(0,"10583601");
newList2.add(1,"10584601");
newList3.add(0,"10583601");
newList3.add(1,"10583611");

    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()-1,test.length()));
           //newList2.add(String.valueOf(t+s));
        }else {
            newList2.add(newList3.get(i));
        }
    }
    newList.addAll(newList2);
    for (String list :newList) {
        System.out.println(list);
    }
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!