[英]Java: best way to declare a stack of cards
我正在嘗試制作一個簡單的Blackjack應用程序,以便可以練習從Java書籍中學到的知識。
請記住,您認為什么是我存儲卡片組的最佳方式?“項目”將永遠不會部署,也就不會那么“重要”。
我的選擇似乎是簡單數組,二維數組,哈希圖和arraylist。
一旦將卡片收集到收藏夾中,我認為我將構建的方法將是:
shuffleDeck()-自我說明
removeCardsFromDeck()-因此這些卡被“用於”游戲
mergeNumberOfDecks(int howMany)-合並多少副牌(例如:0或2或4或8)
請記住,您認為哪一個最容易處理:簡單數組,二維數組,哈希圖或arraylist?
多數情況下,使用Deque
可以最好地解決。 同時具有List和queue方法,並且也是一個集合,因此您可以執行以下操作。
隨機播放:由Collections.shuffle(List)
完成(如果您選擇的雙端隊列也實現了List),請參閱LinkedList
作為示例
刪除卡片:-最好是頂部卡片,Deque具有removeFirst()
合並: java.util.collection
具有addAll(Collection)
(因此,實現集合的任何類都具有此方法)
在您列出的選項中, List
可能是最有意義的,因為它易於使用,並且在對牌組進行改組后將保留其順序。
除非您真的想自己全部實現它們,否則您提到的三種方法已經實現。
shuffleDeck(): Collections.shuffle(List)
removeCardsFromDeck():
LinkedList.removeFirst()
/ LinkedList.removeLast()
或Stack.pop()
)請注意,盡管我如果以Stack為例,除非您需要同步,否則您可能不希望使用它。 Collection.removeAll(Collection)
mergeNumberOfDecks():沒有exact
相似之處,但是Collection.addAll(Collection)
將使您的工作非常輕松
請記住,List繼承了Collection的所有方法,並且實現List的任何類都必須為List的所有方法(包括從Collection繼承的方法)定義實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.