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

C#でのHashtableとDictionaryの使い方徹底解説:基本操作からサンプルコードまで

C#では、キーと値のペアを扱うコレクションとして「Hashtable」と「Dictionary」がよく使われます。どちらもキーを基準に要素へ高速にアクセスできる便利なクラスですが、それぞれ特徴や使い方が異なります。この記事では、両者の主なメソッドと実際のコード例を通じて、基本的な操作方法をわかりやすく解説します。


Hashtable(ハッシュテーブル)とは

Hashtable クラスは、キーのハッシュコードに基づいて整理された、キーと値のペアのコレクションを表します。格納された要素には、キーを使ってアクセスします。非ジェネリック型のため、キー・値ともに object 型として扱われる点が特徴です。

Hashtableの主なメソッド

No.メソッドと説明
1public virtual void Add(object key, object value);
指定したキーと値を持つ要素をHashtableに追加します。
2public virtual void Clear();
Hashtableからすべての要素を削除します。
3public virtual bool ContainsKey(object key);
Hashtableに指定したキーが含まれているかどうかを判定します。
4public virtual bool ContainsValue(object value);
Hashtableに指定した値が含まれているかどうかを判定します。

Hashtableの使用例

次の例では、部署コードをキーとして部署名をHashtableに登録し、重複チェックを行ったうえで全要素を表示しています。

using System;
using System.Collections;

namespace Demo {
    class Program {
        static void Main(string[] args) {
            Hashtable ht = new Hashtable();

            ht.Add("D01", "Finance");
            ht.Add("D02", "HR");
            ht.Add("D03", "Operations");

            if (ht.ContainsValue("Marketing")) {
                Console.WriteLine("This department name is already in the list");
            } else {
                ht.Add("D04", "Marketing");
            }

            ICollection key = ht.Keys;

            foreach (string k in key) {
                Console.WriteLine(k + ": " + ht[k]);
            }
            Console.ReadKey();
        }
    }
}

実行結果

D04: Marketing
D02: HR
D03: Operations
D01: Finance

この例では、まず Add() メソッドで3つの部署を登録し、ContainsValue() で「Marketing」という値が既に存在するかを確認しています。存在しないため、新たに「D04: Marketing」が追加されます。最後に Keys プロパティで全キーを取得し、foreachループで各キーと対応する値を出力しています。

Dictionary(ディクショナリ)とは

Dictionary<TKey, TValue> は、C#におけるジェネリック版のキーと値のコレクションです。System.Collections.Generic 名前空間に含まれており、キーと値の型を明確に指定できるため、型安全性が高く、ボックス化・ボックス化解除のオーバーヘッドもありません。現在のC#開発では、非ジェネリックなHashtableよりもDictionaryを使用するのが一般的です。

Dictionaryの主なメソッド・プロパティ

No.メソッドと説明
1Add(TKey key, TValue value)
指定したキーと値のペアをDictionaryに追加します。
2Remove(TKey key)
指定したキーを持つ要素を削除します。
3ContainsKey(TKey key)
Dictionary<TKey, TValue> に指定したキーが存在するかどうかを確認します。
4ContainsValue(TValue value)
Dictionary<TKey, TValue> に指定した値が存在するかどうかを確認します。
5Count
キーと値のペアの数を取得します。
6Clear()
Dictionary<TKey, TValue> からすべての要素を削除します。

Dictionaryの使用例

次の例では、int型のキーと値を持つDictionaryに5つの要素を追加し、Count プロパティで要素数を表示しています。

using System;
using System.Collections.Generic;

public class Demo {
    public static void Main() {

        IDictionary<int, int> d = new Dictionary<int, int>();
        d.Add(1, 44);
        d.Add(2, 34);
        d.Add(3, 66);
        d.Add(4, 47);
        d.Add(5, 76);

        Console.WriteLine(d.Count);
    }
}

実行結果

5

まとめ

HashtableとDictionaryはどちらもキーと値のペアを管理するコレクションですが、Dictionaryはジェネリック対応で型安全・高性能であるため、新規開発ではDictionaryの使用が推奨されます。一方、レガシーコードの保守などではHashtableに出会うこともあります。それぞれのメソッドの使い方を理解しておくと、状況に応じた適切なコレクション選択ができるようになります。

  1. Pythonの辞書にキーと値のペアを追加する方法を徹底解説

    Pythonの辞書(dict)は、キーと値のペアで構成されるコレクションです。すでに定義済みの辞書に対して、新しいキーと値のペアを追加する場面は開発の中で非常によくあります。この記事では、代表的な3つの追加方法を具体例とともにわかりやすく解説します。1. 新しいキーを添字として代入する最もシンプルな方法は、新しいキーを角括弧(添字)で指定し、そこに値を代入する書き方です。既存のキーを指定すれば値が上書きされ、存在しないキーを指定すれば新しい要素が追加されます。コード例CountryCodeDict = {India: 91, UK: 44, USA: 1} print(CountryCodeD

  2. IngramerでInstagramのいいねとフォロワーを効率的に増やす方法

    本記事はスポンサード記事であり、Ingramerの提供により作成されました。掲載内容および意見は、スポンサーが付いた場合でも編集の独立性を保つ筆者自身のものです。 SNSインフルエンサーであっても、単にオンラインでのつながりを楽しみたい一般人であっても、フォロワー数といいね数は大きな差を生みます。Facebook、Instagram、Twitter、Snapchatなど、SNSはまさにそのために存在しているのです。 Ingramerは、Instagramでのつながり、フォロワー、いいねを見つける手助けをしてくれるサービスです。このボットは特殊なフィルターを使用し、ハッシュタグ、位置情報、ユー