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

请注意,在 getter 中公开像这样的可变对象并不是一个好主意ArrayList,但现在让我们把这个问题放在一边。

然后这样做:

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 回答