Java:声明一叠牌的最佳方式

标签 java arrays collections

我正在尝试制作一个简单的 Blackjack 应用程序,以便我可以练习从 Java 书中学到的知识。

“项目”永远不会被部署,也不“重要”,只是为了让我学习,记住这一点,你认为我存储卡片包的最佳方式是什么?

我的选择似乎是简单数组、二维数组、hashmap 和 arraylist。

一旦我将卡片放入我的 Collection 中,我认为我将构建的方法将是:

shuffleDeck() - 不言自明
removeCardsFromDeck() - 所以这些卡被“用于”游戏
mergeNumberOfDecks(int howMany) - 要合并多少副牌(例如:0或2或4或8)

请记住,您认为哪一个最容易处理: 简单数组、双维数组、hashmap 还是 arraylist?

最佳答案

大多数牌堆/牌组情况最好通过使用 Deque 来解决。 。具有列表和队列方法,并且也是一个集合,因此您可以执行以下操作。

随机播放:由 Collections.shuffle(List) 完成(如果您选择的双端队列也实现了 List)请参阅LinkedList举个例子

删除卡片: - 理想情况下是顶部卡片,Deque 有 removeFirst()

合并:java.util.collectionaddAll(Collection)(因此任何实现集合的类都有此方法)

关于Java:声明一叠牌的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233194/

相关文章:

java - emptyList() vs empty Set(),如果需要 Collection 的实例,是否有任何理由选择一个而不是另一个?

java - 如何选择 Collectors.toList() 返回的列表类型?

java - 如何将esp8266 softAp与android应用程序连接

java - 您需要将 APK 文件大小减小到 100MB 或使用 APK 扩展文件

java - 获取高达 100 纳秒的基于时间的 uuid

java - 未调用 Spring Security j_spring_security_check

c - 使用递归查找两个数组是否有公共(public)数字

ios - 如何将 [String] 拆分成行?

javascript - 如何找到数组中重复的元素并替换它们?

java - 将 LinkedList 转换为 ArrayList 以加快并发迭代