Class 将两个ArrayList与两个不同的对象(属于同一类的实例)合并

Class 将两个ArrayList与两个不同的对象(属于同一类的实例)合并,class,object,merge,arraylist,copy,Class,Object,Merge,Arraylist,Copy,我只想合并两个ArrayList,并将内容放在一个ArrayList中。两个列表都包含同一类的实例对象。 不过,对象引用本身是不同的。但是,我得到的组合arraylist的大小出乎意料。我使用Java1.4 ArrayList a1 = new ArrayList(); ArrayList b1 = new ArrayList(); ClassA cls1A = new ClassA(); ClassA cls1B = new ClassA(); a1.add(cls1A); b1.

我只想合并两个ArrayList,并将内容放在一个ArrayList中。两个列表都包含同一类的实例对象。 不过,对象引用本身是不同的。但是,我得到的组合arraylist的大小出乎意料。我使用Java1.4

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???

我想出了以下解决方案。首先获取两个ArrayList的大小,然后增加两个ArrayList需要合并到的ArrayList的容量(通过使用ArrayList类的ensureCapacity方法)。然后从第一个arraylist的最后一个索引中添加第二个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++;
        }
a1.添加(cls1A);
b1.加入(cls1B);
int p=a1.size();
intw=b1.size();
int j=(p+w);
a1.保证能力(j);
对于(int r=0;r