← C#

LESSON / ARTICLE

DictionaryとHashSet

キーと値の対応付け、重複を許さない集合を扱います。

Dictionary

Dictionary<TKey, TValue>は、キーから値を検索するコレクションです。キーは一意で、同じキーを重複して登録できません。

var scores = new Dictionary<string, int>();
scores["Aoi"] = 85;
scores["Ren"] = 92;

if (scores.TryGetValue("Aoi", out int score))
{
    Console.WriteLine(score);
}

存在しないキーをインデクサで読み取ると例外になるため、存在確認にはTryGetValueが便利です。

HashSet

HashSet<T>は重複しない要素を管理します。

var visited = new HashSet<int>();
visited.Add(4);
visited.Add(4);
visited.Add(7);

Console.WriteLine(visited.Count);
Console.WriteLine(visited.Contains(7));

同じ値を複数回追加しても、集合内の要素は重複しません。

選び方

  • 順番に要素を並べて扱うならList。
  • キーから値を探すならDictionary。
  • 登録済みかどうかを効率よく調べたいならHashSet。

ハッシュを使うコレクションは、平均的には高速な検索が期待できますが、順序を保証する目的には使わないでください。