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的大小。
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!
答案 0 :(得分:4)
您正在重复使用同一个对象,并且该引用已添加到total_buy
列表中。而不是
buyers.clear();
DO
buyers = new ArrayList<Auctionhouse>();
这将每次为buyers
创建一个新对象,因此会在total_buy
列表中保留更新的引用。