私はハンドストレングスエバリュエーターを実装しています。これは、片手とフロップを配った後、残りの47枚のカードから可能なすべてのペアを評価することです。
エバリュエーターを実装しましたが、比較できるすべての可能な組み合わせがありません。2枚のカードで構成されるHandのクラスを作成し、各組み合わせをセットのHashSetに格納したいと思います。どのデータ構造を選択する必要がありますか?HashSetが最適な場合、Handの各インスタンスを一意にするにはどうすればよいですか?
私はハンドストレングスエバリュエーターを実装しています。これは、片手とフロップを配った後、残りの47枚のカードから可能なすべてのペアを評価することです。
エバリュエーターを実装しましたが、比較できるすべての可能な組み合わせがありません。2枚のカードで構成されるHandのクラスを作成し、各組み合わせをセットのHashSetに格納したいと思います。どのデータ構造を選択する必要がありますか?HashSetが最適な場合、Handの各インスタンスを一意にするにはどうすればよいですか?
HashSet
合理的なように思えますが、順序付けは後で重要になる可能性があるため、TreeSet
. equals
and compareTo
/Comparable
メソッドを実装するとHand
、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