2013-02-23 65 views
0
for(int i=0;i<Stockhouse.total_stocks;i++){ 
     buyers.clear(); 

     for(int j=0; j<buy.size();j++){ 
     if(buy.get(j).stock_Id.equals("Stock"+i)){ 
      System.out.println("Agent "+buy.get(j).ID+",stock"+buy.get(j).stock_Id+",price "+buy.get(j).price +",quant "+buy.get(j).quantity); 
      Auctionhouse buypr= new Auctionhouse(buy.get(j).price,buy.get(j).quantity); 
      buyers.add(buypr); 
     } 
    } 
     total_buy.add(buyers); 
     System.out.println("buy size "+total_buy.get(i).size()); 
    } 

這裏購買大小正確顯示每個ArrayList作爲total_buy ArrayList元素的大小。ArrayList的ArrayList

我的問題是,當我再次需要這些尺寸後,我只得到最後一個ArrayList的大小。

total_buy.get(0).size()=3 
    total_buy.get(1).size()=3 
    total_buy.get(2).size()=3....... 

但只有total_buy.get(2).size()= 3實際上是3!

回答

4

您正在重複使用同一個對象,並且該引用已添加到total_buy列表中。取而代之的

buyers.clear(); 

buyers = new ArrayList<Auctionhouse>(); 

這將創建一個新的對象buyers每一次,因此守在total_buy列表更新引用。

+0

真的很感激! – igoutas 2013-02-23 11:42:17