C#
 Computer >> コンピューター >  >> プログラミング >> C#

【C#入門】Hashtableからキーを含むICollectionを取得する方法

C#のHashtableクラスでは、Keysプロパティを使うことで、ハッシュテーブルに格納されたすべてのキーを含むICollectionを簡単に取得できます。この記事では、実際のサンプルコードと実行結果をもとに、具体的な使い方をわかりやすく解説します。

基本構文

キーのコレクションを取得するには、以下のようにKeysプロパティを参照します。

ICollection col = hash.Keys;

戻り値はICollection型なので、foreachループなどを使って各キーへ順番にアクセスできます。

例1:文字列型のキーを持つHashtableの場合

まずは、カテゴリ名を値として持つHashtableの例を見てみましょう。

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Hashtable hash = new Hashtable();
        hash.Add("A", "Electronics");
        hash.Add("B", "Appliances");
        hash.Add("C", "Pet Supplies");
        hash.Add("D", "Books");
        hash.Add("E", "Toys");
        hash.Add("F", "Footwear");
        hash.Add("G", "Clothing");

        // キーのコレクションを取得
        ICollection col = hash.Keys;

        foreach(string str in col)
            Console.WriteLine(str + ": " + hash[str]);
    }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

G: Clothing
A: Electronics
B: Appliances
C: Pet Supplies
D: Books
E: Toys
F: Footwear

ポイント: Hashtableは要素の順序を保証しないため、出力されるキーの並び順は挿入した順番とは一致しません。これはHashtableの仕様であり、正しい動作です。

例2:整数型のキーを持つHashtableの場合

続いて、キーに整数を使った別の例です。

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        Hashtable hash = new Hashtable();
        hash.Add(1, "AB");
        hash.Add(2, "CD");
        hash.Add(3, "EF");
        hash.Add(4, "GH");
        hash.Add(5, "IJ");
        hash.Add(6, "KL");
        hash.Add(7, "MN");

        // キーのコレクションを取得
        ICollection col = hash.Keys;

        foreach(int str in col)
            Console.WriteLine("Key = " + str + ", Value = " + hash[str]);
    }
}

出力結果

Key = 7, Value = MN
Key = 6, Value = KL
Key = 5, Value = IJ
Key = 4, Value = GH
Key = 3, Value = EF
Key = 2, Value = CD
Key = 1, Value = AB

このように、取得したキーをインデックスとしてhash[key]のように指定すれば、対応する値も同時に取り出せます。

まとめ

  • Hashtable.Keysプロパティを使うと、すべてのキーを含むICollectionを取得できる。
  • 取得したコレクションはforeachで反復処理でき、キーから値へのアクセスも可能。
  • Hashtableは順序を保証しないため、ソートされた順番が必要な場合は別途並べ替えを行う必要がある。

なお、新しい開発ではジェネリック版であるDictionary<TKey, TValue>の使用が推奨されます。型安全性やパフォーマンスの面で有利なので、要件に応じて使い分けるとよいでしょう。

  1. C#のHashtableクラスにおけるKeysプロパティとは?使い方を解説

    C#のHashtableクラスにおけるKeysプロパティは、Hashtableに登録されているすべてのキーを格納したICollectionを取得するためのプロパティです。このプロパティを利用することで、コレクション内の全キーをまとめて取り出すことができます。以下のコードでは、foreachループを使ってコレクションを順に処理し、すべてのキーを取得・表示しています。foreach (int k in h.Keys) { Console.WriteLine(k); }このコードを実行すると、Hashtableに登録されたすべてのキーが次のように表示されます。使用例using System;

  2. 【C#】Dictionaryからキーのリストを取得する方法

    C#では、Dictionary<TKey, TValue> に格納されたすべてのキーを、List<TKey> として簡単に取り出すことができます。この記事では、Keys プロパティを使ってキーの一覧をリスト化し、画面に表示するまでの手順をサンプルコード付きで解説します。 Dictionaryに要素を追加する まずは、辞書(Dictionary)に要素を設定しましょう。 Dictionary<int, string> d = new Dictionary<int, string>(); // 辞書の要素 d.Add(1, "One&q