日期:2014-05-20 浏览次数:20936 次
有ArrayList A 跟 B A id name 1 甲 1 乙 1 丙 2 丁 2 戊 3 哥 B id name 1 A 1 B 2 C 2 D 3 E 3 F 怎样形成一个新的ArrayList c C Aname Bname 甲 A 乙 B 丙 NULL 丁 C 戊 D 哥 E NULL F 就是list A 与 list B id相等的拼起来,如果不相等,用Null代替,在线等。。。谢谢 大虾
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()) ;
}
}
}