【问题标题】:Merging two ArrayLists with 2 different objects(which are the instance of the same class)合并两个具有 2 个不同对象的 ArrayLists(它们是同一类的实例)
【发布时间】:2012-03-02 17:47:45
【问题描述】:

我只想合并两个 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??

【问题讨论】:

    标签: class object merge arraylist copy


    【解决方案1】:

    我想出了以下解决方案。首先获取两个arraylist的大小,然后增加需要合并的arraylist的容量(通过使用ArrayList类的ensureCapacity方法)。然后从第一个数组列表的最后一个索引添加第二个数组列表的对象。

         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++;
            }
    

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 2021-01-21
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多