我只想合并两个ArrayLists并将内容放在一个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?
答案 0 :(得分:0)
我提出了以下解决方案。首先获取两个arraylists的大小,然后增加两者需要合并的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++;
}