C#のハッシュテーブル Dictionary
stdext::hash_map [VC++2003]
System.Collections.Generic.Dictionary(K,V) [C#2008 Express Edition]
java.util.HashMap<K,V> [J2SE 1.6.0_03]
以上のコレクション(コンテナ)の使い方比較。(自分の知識を整理するためのメモです。)
ここではC#のハッシュテーブル Dictionay(K, V)の使い方を具体的にまとめた。
キー・値ともにオブジェクト型の場合
キーとなるオブジェクトのクラスをKで表記
値となるオブジェクトのクラスをVで表記
[using namespace]
using System.Collections.Generic;
[IEqualityComparerインターフェースの実装]
2つのメンバー関数を実装する。
class KEqualityComparer : IEqualityComparer<K> {
public bool Equals(K k1, K k2) {
return ....;
}
public int GetHashCode(K k) {
return ....;
}
}
[Dictionaryオブジェクトの宣言]
Dictionary<K, V> kvd = new Dictionary<K, V>(new KEqualityComparer());
[キー対値の登録]
kvd.Add(new K(....), new V(....));
[検索]
K k = new K(....); // 検索キー
if (kvd.ContainsKey(k) == true) { // 見つかった
// kvd[k] で値オブジェクトが参照できる
kvd[k].Vのメンバー
} else { // 見つからない
キーが存在しないとき kvd[k]はKeyNotFoundException例外となる。
キーが値型(int)、値がオブジェクト型の場合
[IEqualityComparerインターフェースの実装]
同様に定義する。
class IntEqualityComparer : IEqualityComparer<int> {
public bool Equals(int k1, int k2) {
return (k1 == k2);
}
public int GetHashCode(int k) {
return k;
}
}
[Dictionaryオブジェクトの宣言]
Dictionary<int, V> ivd = new Dictionary<int, V>(new IntEqualityComparer());
[キー対値の登録]
ivd.Add(int値, new V(....));
[検索]
int k = ....; // 検索キー
以下同様。
« C++のハッシュテーブル hash_map | トップページ | JAVAのハッシュテーブル HashMap »
「パソコン・インターネット」カテゴリの記事
- トップページにTooltip (jQueryを使ったオリジナル)(2008.12.20)
- JAVAのハッシュテーブル HashMap(2008.12.15)
- C#のハッシュテーブル Dictionary(2008.12.15)
- C++/C#/JAVA コレクション比較 【ハッシュテーブルの比較概要】(2008.12.12)
- C++/C#/JAVA コレクション比較 【インデックスによる要素アクセス】(2008.12.10)
コメント