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());
    }

ここで購入サイズは、total_buy 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

1 に答える 1

4

同じオブジェクトを再利用していて、参照がtotal_buyリストに追加されています。それ以外の

buyers.clear();

行う

buyers = new ArrayList<Auctionhouse>();

buyersこれにより、毎回新しいオブジェクトが作成されるため、更新された参照がtotal_buyリストに保持されます。

于 2013-02-23T11:31:27.660 に答える