【发布时间】:2021-04-20 19:20:41
【问题描述】:
我已经使用枚举器为花色和等级制作了这个卡片数组,但它是不可变的。我无法从Deck 中删除任何内容。我可以通过使用shuffle
void shuffle() {
List<Card> shuffold = Arrays.asList(cards);
}
即使在使用Arrays.asList(cards) 时,我也无法使用remove 发牌。我不想每次发牌时都使用新牌组,只有在开始新手牌时。我应该将Deck 设为ArrayList 还是可以以某种方式将其转换为可变集,或者这是否可能?
public class Deck {
public final Card[] cards;
public Deck() {
cards = new Card[52];
int i = 0;
for (Suit suit : Suit.values()) {
for (Rank rank : Rank.values()) {
cards[i++] = new Card(rank, suit);
}
}
}
}
我已经可以使用shuffle,但该数组仍然是不可变的,因为我无法使用它来移除牌组中的第一张牌:
void deal() {
Collection deal = new ArrayList(Arrays.asList(cards));
deal.remove(0);
}
【问题讨论】:
-
这能回答你的问题吗? How to convert an Array to a Set in Java