2012-01-23 20 views
0

スーツはカード内の4つのシンボルであり、スーツはカードの13の数字と文字です。私はそれがトランプ(スーツ、値)の値を置くことを言っているHashTable多次元配列の混乱?

cardsInSuit.Add(value, new PlayingCard(suit, value)); 

に混乱していますか?そして、this.cardPack.Add(suit、cardsInSuit); hashTableはすべて線形です。私はこれをsuit = 0と見ており、cardsInSuitは0〜12の別の線形配列を指す値です。私は正しい?


class Pack 
{ 
    private Hashtable cardPack; // no need to specify 
    private PlayingCard[,] cardPack; 

    public Pack() 
    { 
     this.cardPack = new Hashtable(); 

     for (Suit suit = Suit.Clubs; suit <= Suit.Spades; suit++) // outer loop 
     { 
      SortedList cardsInSuit = new SortedList(); // sorted list makes 2 array 
      for (Value value = Value.Two; value <= Value.Ace; value++) 
      { 
       cardsInSuit.Add(value, new PlayingCard(suit, value)); 
      } 
      this.cardPack.Add(suit, cardsInSuit); 
     } 
    } 
+2

'cardPack'と呼ばれる2つのフィールドがあります(1つは' Hashtable'で、もう1つは 'PlayingCard'の2次元配列です)。これはコンパイルされません - コードを正しくコピーしましたか? – Justin

答えて

0

それはありません、それは地図にエントリを追加することです(スーツ、値)

トランプに価値を置くことを言っています。概念的には、HashTableとSortedListの両方がマップです。マップは数学的な概念です。これは、キーと値のペアの集合です。コレクションが作成されると、コレクションにキーを与え、コレクションに対応する値を返します。また、コレクションのすべてのキー、またはキーと値のペアのすべてをコレクションに問い合わせることもできます。

私はこのコードについて好きではないことがたくさんありますが、私はそれを改良して横行しないようにします。

HashTableには、スーツのキーとSortedListの値があります。あなたのテーブルにスーツを渡すと、そのリストが占有される方法を考えると、それはあなたにそのスーツのすべてのカードのコレクションを与えるでしょう。

SortedListsは、キーがカード値で値が特定のカードであるように設定されます。あなたが私たちに示していないカードについての情報を保持する特別なPlayingCardクラスがあります。

ここで、コードセグメントはすべてすべてのカードを持つハッシュテーブルを作成するように設計されています(この定義はかなり明白です。それはスーツを求めて、結果のコレクションに値を求めることです。その結果、その特定のスーツ/バリューを持つPlayingCardが与えられます。 HeartsのためにHashTableを尋ねて、結果のコレクションに7つを求めると、7つの心を表すPlayingCardが与えられます。

ハッシュテーブルは、すべての線形

あるので、ハッシュテーブルやSortedListのどちらも 'リニア' です。各クラスの実装はかなり興味深いですが(今のところ、それは一般的ではありませんが)、それらを完全に順序付けられていないものと考えることが最善です。 (そう、ソートされたリストさえも)。これらの構造の考え方は、いくつかの操作を最適化するためにデータを保存するということです。これらの操作では、マップにアイテムを追加したり、マップからアイテムを削除したり、特定のキーに対応する値を取得したりしています。彼らはそれぞれ、これを達成するために2つの異なるアルゴリズムを使用します。 HashTableはキーのハッシュを配列に格納します(これは本当にクールで、効率的ですが、このポストの説明の範囲を超えています)。 SortedListは、すべてのキーを順番に格納します。それらが順序付けられているので、バイナリ検索アルゴリズムを使用して特定のキーを見つけることができます。これは、正しいキーが見つかるまで各キーを調べるよりはるかに迅速です。