现在有下面的一段代码,打印出来就是用来匹配list1和list2中有相同的数字,如果list1中有而list2中没有,list2用0替代,同样list1中没有,也是0替代,都没有就不用打印
但是现在必须是数字是安顺序或倒序才能排出来,数字要是没有顺序,就不行了,
希望高手帮忙解决一下。List<Integer> list1=new ArrayList<Integer>();
List<Integer> list2=new ArrayList<Integer>();
List<Integer> list3=new ArrayList<Integer>();
list1.add(1);
list1.add(2);
list1.add(3);
list2.add(1);
list2.add(2);
list2.add(4);
list2.add(5);
Set<Integer> set=new HashSet<Integer>();
for (int i = 0; i < list1.size(); i++) {
set.add(list1.get(i));
}
for (int i = 0; i < list2.size(); i++) {
set.add(list2.get(i));
}
int c=0;
int d=0;
for (int i = 0; i < set.size(); i++) {
int a=0;
int b=0;
if(list1.size()<c+1){
a=0;
}else{
a=list1.get(c);
c++;
}

if(list2.size()<d+1){
b=0;
}else{
b=list2.get(d);
d++;
}


if(a==b){
list3.add(a);
list3.add(b);
}else if(a!=b&&a!=0){
list3.add(a);
list3.add(0);
d--;
}else if(a!=b&&b!=0){
list3.add(0);
list3.add(b);
c--;
}
}
for (int j = 0; j <list3.size(); j++) {
System.out.println(list3.get(j));
}

解决方案 »

  1.   

    没明白啥意思。要得到2个list中相同的数据,并且数据要排序? 是要这样的效果么?
      

  2.   

      找到了实现的方法了 
    List<Integer> list1=new ArrayList<Integer>();
    List<Integer> list2=new ArrayList<Integer>();
    list1.add(1);
    list1.add(2);
    list1.add(3);
    list2.add(4);
    list2.add(2);
    list2.add(1);
    list2.add(5);
    Map<Integer, Integer> map1=new HashMap<Integer, Integer>();
    Map<Integer, Integer> map2=new HashMap<Integer, Integer>();
    for (int i = 0; i < list1.size(); i++) {
    map1.put(list1.get(i),list1.get(i));
    }
    for (int i = 0; i < list2.size(); i++) {
    map2.put(list2.get(i), list2.get(i));
    }
    for(Integer key : map1.keySet()){
    System.out.println(map1.get(key));
    System.out.println(map2.get(key)==null?0:map2.get(key));
    map2.remove(key);
    }
    for (Integer key :map2.keySet()) {
    System.out.println(map1.get(key)==null?0:map1.get(key));
    System.out.println(map2.get(key));
    }
      

  3.   

    你这应该还是没排序吧、只是你的数据是这样子添的而已、
    list1.add(1); 
    list1.add(2); 
    list1.add(3);