0

ArrayLists ("Hands") の ArrayList ("List of Hands") を作成しましたが、あまり洗練された方法ではありません。私は 1 ~ 4 ハンドを想定しており、このアイデアを思いつきました。

ArrayList<ArrayList<Card>> hands=new ArrayList<ArrayList<Card>>();
i=0;
if(i<playersQuantity){
    ArrayList<Card> hand0=new ArrayList<Card>();
    hands.add(hand0);
    i++;
}
if(i<playersQuantity){
    ArrayList<Card> hand1=new ArrayList<Card>();
    hands.add(hand1);
    i++;
}
if(i<playersQuantity){
    ArrayList<Card> hand2=new ArrayList<Card>();
    hands.add(hand2);
    i++;
}
if(i<playersQuantity){
    ArrayList<Card> hand3=new ArrayList<Card>();
    hands.add(hand3);
}

このコードを短くする方法はありますか? 20、100、またはそれ以上のハンドを期待しなければならない場合、この方法はかなり問題になります...

4

2 に答える 2

2

次のようなループを使用するのはどうですか。

for (int i = 0; i < playersQuantity; i++) {
    ArrayList<Card> hand = new ArrayList<Card>();
    hands.add(hand);
}
于 2013-11-02T18:23:27.437 に答える
2

Hand抽象化を作成して、オブジェクト モデルを少し改良することをお勧めします。

public class Hand {
       List<Card> cards= new ArrayList<>();

       public Hand(List<Card> cards) {
           this.cards = cards;
       }

       public List<Card> getCards() {
           return cards;
       }

       public void setCards(List<Card> cards) {
           this.cards = cards;
       }
}

このような変更可能なオブジェクトをArrayListgetter で公開することはお勧めできませんが、この問題は脇に置きましょう。

次に、これを行います:

ArrayList<Hand> hands = new ArrayList<>();
for(int i = 0 ; i < playersQuantity ; i++) {
    hands.add(new Hand(new ArrayList<Card>()));

}

または、他に必要なことは何でも。

于 2013-11-02T18:33:18.093 に答える