C#でのHashtableとDictionaryの使い方徹底解説:基本操作からサンプルコードまで
C#では、キーと値のペアを扱うコレクションとして「Hashtable」と「Dictionary」がよく使われます。どちらもキーを基準に要素へ高速にアクセスできる便利なクラスですが、それぞれ特徴や使い方が異なります。この記事では、両者の主なメソッドと実際のコード例を通じて、基本的な操作方法をわかりやすく解説します。
Hashtable(ハッシュテーブル)とは
Hashtable クラスは、キーのハッシュコードに基づいて整理された、キーと値のペアのコレクションを表します。格納された要素には、キーを使ってアクセスします。非ジェネリック型のため、キー・値ともに object 型として扱われる点が特徴です。
Hashtableの主なメソッド
| No. | メソッドと説明 |
|---|---|
| 1 | public virtual void Add(object key, object value); 指定したキーと値を持つ要素をHashtableに追加します。 |
| 2 | public virtual void Clear(); Hashtableからすべての要素を削除します。 |
| 3 | public virtual bool ContainsKey(object key); Hashtableに指定したキーが含まれているかどうかを判定します。 |
| 4 | public 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. | メソッドと説明 |
|---|---|
| 1 | Add(TKey key, TValue value) 指定したキーと値のペアをDictionaryに追加します。 |
| 2 | Remove(TKey key) 指定したキーを持つ要素を削除します。 |
| 3 | ContainsKey(TKey key) Dictionary<TKey, TValue> に指定したキーが存在するかどうかを確認します。 |
| 4 | ContainsValue(TValue value) Dictionary<TKey, TValue> に指定した値が存在するかどうかを確認します。 |
| 5 | Count キーと値のペアの数を取得します。 |
| 6 | Clear() 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に出会うこともあります。それぞれのメソッドの使い方を理解しておくと、状況に応じた適切なコレクション選択ができるようになります。
-
Pythonの辞書にキーと値のペアを追加する方法を徹底解説
Pythonの辞書(dict)は、キーと値のペアで構成されるコレクションです。すでに定義済みの辞書に対して、新しいキーと値のペアを追加する場面は開発の中で非常によくあります。この記事では、代表的な3つの追加方法を具体例とともにわかりやすく解説します。1. 新しいキーを添字として代入する最もシンプルな方法は、新しいキーを角括弧(添字)で指定し、そこに値を代入する書き方です。既存のキーを指定すれば値が上書きされ、存在しないキーを指定すれば新しい要素が追加されます。コード例CountryCodeDict = {India: 91, UK: 44, USA: 1} print(CountryCodeD
-
IngramerでInstagramのいいねとフォロワーを効率的に増やす方法
本記事はスポンサード記事であり、Ingramerの提供により作成されました。掲載内容および意見は、スポンサーが付いた場合でも編集の独立性を保つ筆者自身のものです。 SNSインフルエンサーであっても、単にオンラインでのつながりを楽しみたい一般人であっても、フォロワー数といいね数は大きな差を生みます。Facebook、Instagram、Twitter、Snapchatなど、SNSはまさにそのために存在しているのです。 Ingramerは、Instagramでのつながり、フォロワー、いいねを見つける手助けをしてくれるサービスです。このボットは特殊なフィルターを使用し、ハッシュタグ、位置情報、ユー