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