簡體   English   中英

Java:聲明一疊紙牌的最佳方法

[英]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():

  • 對於單張卡,可以使用Collection.remove(Object)和相關方法(例如List.remove(int索引)或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM