- 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()) ; } }}