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

C#のHashtableから値を含むICollectionを取得する方法

C#のHashtable(ハッシュテーブル)に格納されたすべての値をひとまとめに扱いたい場合は、Valuesプロパティを利用します。このプロパティは、テーブル内の全要素の値を含むICollectionオブジェクトを返します。同様に、キーだけを取り出したい場合はKeysプロパティを使います。

以下では、実際のコード例と実行結果をもとに、具体的な取得方法を解説します。

例1:文字列キーのHashtableから値のICollectionを取得する

まずは、カテゴリ名を値として格納した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を取得
      ICollection col = hash.Values;

      foreach(string str in col)
         Console.WriteLine(str);
   }
}

実行結果

Clothing
Electronics
Appliances
Pet Supplies
Books
Toys
Footwear

このように、hash.Valuesを参照するだけで、Hashtable内のすべての値を含むICollectionが手に入ります。あとはforeachで順番に取り出すだけでOKです。

例2:数値キーのHashtableでキーと値のペアを表示する

続いて、キー側のICollectionを取得し、それをもとにキーと値のペアを表示する例を見てみましょう。Keysプロパティでキーのコレクションを取得し、各キーを使って対応する値を参照しています。

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を取得
      ICollection col = hash.Keys;

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

実行結果

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

押さえておきたいポイント

  • Valuesプロパティ:Hashtable内のすべての「値」を含むICollectionを返します。
  • Keysプロパティ:Hashtable内のすべての「キー」を含むICollectionを返します。
  • 戻り値はICollection型なので、foreachによる反復処理やCountプロパティでの要素数の取得が可能です。
  • Hashtableは内部的にハッシュ方式でデータを管理しているため、要素の列挙順序は保証されません。実行環境によって表示順序が異なる場合がある点に注意しましょう。

このように、Values/Keysプロパティを使えば、Hashtableの中身を柔軟に取り出して処理できます。キーと値のどちらが必要かを意識して、適切なプロパティを選択してください。

  1. C#のHashtableクラスのValuesプロパティとは?使い方を解説

    C#のHashtableクラスには、コレクション内の「値」だけをまとめて取得するためのValuesプロパティが用意されています。このプロパティは、Hashtableに格納されているすべての値を含むICollectionオブジェクトを返します。Hashtableの宣言と値の追加まず、Hashtableコレクションを宣言します。Hashtable ht = new Hashtable();次に、Addメソッドを使ってキーと値のペアを追加していきます。ht.Add(One, Henry); ht.Add(Two, Kevin); ht.Add(Three, David);Valuesプロパティで値を

  2. 【究極ガイド】Rubyのハッシュとは?定義・実例・主要メソッドを徹底解説

    Rubyのハッシュとは? ハッシュ(Hash)は、データを一意なキーと値のペアとして格納するためのデータ構造です。配列とは異なり数値のインデックスを持たず、値にはキーを使ってアクセスします。 具体的な活用例: 国名とそれに対応する国コードの一覧(例:ES ⇾ スペイン) 辞書:すべての単語に複数の定義が紐づいている ドメイン名とIPアドレスの対応表 Rubyプログラムの中でハッシュを適切な場面で使えば、コードの処理速度を向上させることができます。 つまり、こういうことです: データが辞書のような形式である(またはその形式に変換できる)場合、つまりキーとそれに紐づく値でデータをグループ化でき