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币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
两个List合并去重,并排序
一:去重 在工作中,我们经常需要对两个List进行合并去重,对于List中的数据不同,有不同的处理方式。 1.List中是基础数据类型 List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<>(); list1.add(new Integ
两个List合并去重
今天遇到一个合并去重问题,从网上搜索一样总结出来两个比较简单的方法,这里去重是只能取出地址相同的数据,例如:如果两个字符串的值相同但都是单独new出来的这样去不了 @Test public void test3(){ List a = new ArrayList(); List b = new ArrayList(); MyTest a1 = new MyTest(); My
java 合并两个list 并去重
上代码:代码写得糙,但是能表达意思: public static void main(String[] args) throws Exception {         List list1 = new ArrayList();         List list2 = new ArrayList();         list1.add(1);         list1.add(2);
java中list去重合并那点事
需求很简单,就是有两个List A和B,它们有重复的部分,怎么去重后合并在一起,好,那我们开始思考。 然而我的第一反应居然是遍历判断,百度搜了一下后发现我的java真是白学了。。。List是自带的方法都没仔细研究,好吧,解决方法如下: A.removeAll(B);A.addAll(B); 好吧,自卑完开始实践,但是呢,还是有点小问题出现了! 什么问题呢?因为我的List不是普
java List 2个List 合并后去重, 或单个List 去重
1. 单个List 去重:     如果用的是Set集合就不用怕重复的问题了,如果用的List就要想办法将它变为Set package com; import java.util.ArrayList; import java.util.HashSet; import java.util.List; public class Test4 { /** * @param args *
单个/多个List去重,合并,查询重复项
1.单个List去重  1.不带类型写法: List listWithoutDup = new ArrayList(new HashSet(listWithDup)); 2.带类型写法(以String类型为例): 1)Java 7以下写法: List listWithoutDup = new ArrayList(new HashSet(listWithDu
List 集合去重合并 , 多种方法演示
最近空闲时间去面试 , 被问了一个问题list如何去重合并 , 想了半天只想到了最繁琐的循环方法 , 顿觉丢人. 整理一下资料供大家参考List<String> a = new ArrayList<String>(); a.add("2"); a.add("4"); a.add("5"); a.add("6"); List<String> b = new ArrayList<String>();
java两个ArrayList合并,并且去掉重复数据的算法
package com.lxl.test; import java.util.ArrayList; import java.util.List; /**  * 两个ArrayList合并,并且去掉重复数据的算法  * 思路:  * ①取出两个list中公共的元素  * ②分别从两个list中把公共的元素去掉  * ③将去掉公共元素的两个list合并就去掉了重复的数据
JDK8使用Stream对数组合并、去重
传统的写法String[] str1 = {"08:00", "09:00", "10:00", "18:00", "21:00"}; String[] str2 = {"12:00", "09:00", "10:00", "11:00"}; //合并不去重 List<String> list1 = new ArrayList<String>(Arrays.asList(str1)); list
两个集合合并成并去重的简单方法
// 两个集合合并成并去重 public void mergeSet(Set a,Set b){ // org.apache.commons.collections.CollectionUtils. Collection union = org.apache.commons.collections.CollectionUtils.union( a, b ); //两个集合的并集 // Co