java - 如何从已创建的数组创建可变集?
问题描述
我已经为花色和等级使用枚举器制作了这组卡片,但它是不可变的。我无法从Deck
. 我可以shuffle
使用
void shuffle() {
List<Card> shuffold = Arrays.asList(cards);
}
remove
即使在使用Arrays.asList(cards)
我不想每次发牌时都使用新牌组时,我也不能用来发牌,只有在开始新手牌时。我应该制作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);
}
解决方案
您可能希望套牌是 a List
,所以它有顺序,但这很容易。写吧
List<Card> shuffled = new ArrayList<>(Arrays.asList(cards));
或者如果你真的想要一套
Set<Card> shuffled = new HashSet<>(Arrays.asList(cards));
推荐阅读
- mongodb - MongoDB 查询部分工作
- python - 解析 CSV 文件 - “IndexError:列表索引超出范围”
- angular - 在 Angular 8 中加载时启动引导模式对话框
- java - 如何从 javafx 中的 hbox 中删除节点?
- google-kubernetes-engine - gcp-project-1 中的 gke 集群已成功注册,但在 Anthos Hub 项目中不可见/不可访问;但在gke项目中
- c++ - 如何正确写出这个方程
- c# - c# ASP.NETcore 中的路由
- javascript - 使用 Node.js 模拟 fetch 的崩溃
- nuxt.js - 如何在打字稿中使用 Nuxt fetch() 钩子?
- php - php中的字符串比较奇怪的行为