Объединение двух списков ArrayList с двумя разными объектами (которые являются экземплярами одного и того же класса) - PullRequest
0 голосов
/ 02 марта 2012

Я просто хочу объединить два ArrayList и иметь содержимое в одном ArrayList. Оба списка содержат объект, который является экземпляром одного и того же класса. Сами ссылки на объекты разные. Однако я получаю этот неожиданный размер для объединенного массива. Я использую JAVA 1.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, который отображает объединенный размер ??

1 Ответ

0 голосов
/ 06 марта 2012

Я придумал следующее решение. Сначала получите размер обоих массивов, затем увеличьте емкость (с помощью метода sureCapacity класса 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++;
        }
...