簡體   English   中英

如何從卡列表中生成所有唯一的卡對?

[英]How can I generate all unique card pairs from a list of cards?

我正在實施一個手牌力量評估器,用於在處理單手和翻牌后評估其余47張牌中的所有可能對。

我已經實現了評估器,但是我缺少要比較的所有可能的組合。 我很想為Hand創建一個類,它由兩張卡組成,並將每個組合存儲在一個集合HashSet中。 我應該選擇哪種數據結構? 如果HashSet是最好的,那么我如何強制Hand的每個實例化都是唯一的?

HashSet看起來很合理,但由於排序可能稍后TreeSet您可能需要考慮TreeSet 如果在Hand實現equalscompareTo / Comparable方法,則Set將強制唯一性。

我會給卡片編號或將它們放在一個列表中。

如果您使用列表,則可以執行此操作

Set<Card> inHand = ...
for(int i=0;i<list.size();i++) {
  Card card1 = list.get(i);
  if (inHand.contains(card1)) continue;

  for(int j=i+1;j<list.size();j++) {
      Card card2 = list.get(j);
      if (inHand.contains(card2)) continue;

      // process card1 and card2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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