当前位置: 代码迷 >> J2SE >> 两个ArrayList 如何进行循环比较,
  详细解决方案

两个ArrayList 如何进行循环比较,

热度:72   发布时间:2016-04-24 01:12:14.0
两个ArrayList 怎么进行循环比较,在线等。。。。
HTML code
有ArrayList A 跟 BAid   name1     甲1     乙1     丙2     丁2     戊3     哥Bid   name1     A1     B2     C2     D3     E3     F怎样形成一个新的ArrayList   cCAname    Bname甲        A乙        B丙        NULL丁        C戊        D哥        ENULL      F就是list A 与 list B id相等的拼起来,如果不相等,用Null代替,在线等。。。谢谢 大虾


------解决方案--------------------
Java code
import java.util.ArrayList;import java.util.List;class Node{    private int id ;    private String name ;        public Node(){    }    public Node(int id, String name){        this.id = id ;        this.name = name ;            }        public int getId(){        return this.id ;    }    public void setId(int id){        this.id = id ;    }            public String getName(){        return this.name ;    }    public void setName(String name){        this.name = name ;    }}class Node1{    private String name1 ;    private String name2 ;        public Node1(){    }        public Node1(String name1, String name2){        this.name1 = name1 ;        this.name2 = name2 ;    }        public String getName1(){        return this.name1 ;    }    public void setName1(String name1){        this.name1 = name1 ;    }        public String getName2(){        return this.name2 ;    }    public void setName2(String name2){        this.name2 = name2 ;    }    @Override    public String toString() {        return "Node1 [name1=" + name1 + ", name2=" + name2 + "]";    }        }public class Test3{   public static void main(String [] args){        List<Node> listA = new ArrayList<Node>() ;          listA.add(new Node(1, "甲")) ;     listA.add(new Node(1, "乙")) ;     listA.add(new Node(1, "丙")) ;     listA.add(new Node(2, "丁")) ;     listA.add(new Node(2, "戊")) ;     listA.add(new Node(3, "哥")) ;          List<Node> listB = new ArrayList<Node>() ;          listB.add(new Node(1, "A")) ;     listB.add(new Node(1, "B")) ;     listB.add(new Node(2, "C")) ;     listB.add(new Node(2, "D")) ;     listB.add(new Node(3, "E")) ;     listB.add(new Node(3, "F")) ;          int idxA = 0 , idxB = 0 ;     int oldId = -1 ;     int aId = 0, bId = 0;           Node nA = null ,nB = null ;     List<Node1> listC = new ArrayList<Node1> () ;               while(idxA < listA.size() && idxB < listB.size()){                  nA = (Node)listA.get(idxA) ;         aId = nA.getId() ;         nB = (Node)listB.get(idxB) ;         bId = nB.getId() ;                  if (oldId == -1){              oldId = nA.getId() ;         }//         System.out.println(" idxA: "+ idxA + " -- "+ aId + " -- " + oldId + " --- " + bId //                 +" -- "+ " idxB: "+  idxB);         if (aId == oldId){             if (bId == oldId){                 listC.add(new Node1(nA.getName(), nB.getName()) ) ;                  idxA++ ;                 idxB++ ;             }else{                 listC.add(new Node1(nA.getName(), null) ) ;                 idxA++ ;                              }         }else if (bId == oldId){             listC.add(new Node1(null, nB.getName()) ) ;             idxB++ ;         }else{             oldId = aId ;             if (bId == oldId){                 listC.add(new Node1(nA.getName(), nB.getName()) ) ;                  idxA++ ;                 idxB++ ;             }else{                 listC.add(new Node1(nA.getName(), null) ) ;                 idxA++ ;                              }                      }     }     while(idxA < listA.size()){         nA = listA.get(idxA) ;         idxA++ ;         listC.add(new Node1(nA.getName(), null) ) ;      }          while(idxB < listB.size()){         nB = listB.get(idxB) ;         idxB++ ;         listC.add(new Node1(null, nB.getName()) ) ;      }          for (int i =0 ; i < listC.size(); i++){         System.out.println(listC.get(i).toString()) ;              }        }}
  相关解决方案