2012-03-02 20 views
0

2つのArrayListをマージし、その内容を1つのArrayListに入れたいだけです。両方のリストには、同じクラスのインスタンスであるオブジェクトが含まれています。 ただし、オブジェクト参照自体は異なります。しかし、私は結合arraylistのこの予期しないサイズを取得しています。私はJAVA 1.4を使用しています2つの異なるオブジェクト(同じクラスのインスタンス)を持つ2つのArrayListをマージする

ArrayList a1 = new ArrayList(); 
ArrayList b1 = new ArrayList(); 


ClassA cls1A = new ClassA(); 

ClassA cls1B = new ClassA(); 


a1.add(cls1A); 

b1.add(cls1B); 


a1.size() = 100; 

b1.size() = 50; 


//merge the two arraylist contents into one 

//1st method and its result 

a1.addAll(b1); 


//Expected Result 
a1.size = 150 

//but 

//Obtained result 
a1.size = 6789 


//2nd method and its result 

Collections.copy(a1, b1) 

//Expected result 
    a1.size() = 150 

//but 

//Obtained result 
a1.size = 6789 

どのように私は結合されたサイズを表示するArrayListを持つことができますか?

答えて

0

私は以下の解決策を考え出しました。最初に両方のarraylistsのサイズを取得し、2つをマージする必要があるarraylistの容量を増やします(ArrayListクラスのensureCapacityメソッドを使用して)。次に、最初のarraylistの最後のインデックスから2番目のarraylistのオブジェクトを追加します。

 a1.add(cls1A); 
    b1.add(cls1B); 
     int p = a1.size(); 

     int w = b1.size(); 

     int j = (p + w); 

     a1.ensureCapacity(j); 



     for(int r = 0; r <w; r++) 
     { 

     ClassA cls1B = new ClassA(); 
     Object obj = b1.get(r);     
     cls1B = (ClassA)obj; 
     a1.add(p, cls1B); 
     p++; 
     } 
関連する問題