導入
「重複を排除したい」「ある値が含まれるか高速に調べたい」——そのための集合がHashSet<T>です。同じ値は1つしか持てません。
図解
flowchart LR
IN["追加: A, B, A, C, B"] --> HS["HashSet"]
HS --> OUT["中身: A, B, C<br/>(重複は自動で消える)"]
style HS fill:#e8f5e9
サンプル
HashSet<string> tags = new();
tags.Add("C#");
tags.Add("Web");
tags.Add("C#"); // 重複は無視される(追加されない)
Console.WriteLine(tags.Count); // 2 ← C# は1つだけ
Console.WriteLine(tags.Contains("Web")); // True ← 含まれるか高速判定
// 配列から重複を取り除く典型例
int[] data = { 1, 2, 2, 3, 3, 3 };
HashSet<int> unique = new(data);
Console.WriteLine(unique.Count); // 3
HashSet<型>は重複を許さない集合.Addで追加(既存の値は無視)、.Containsで存在確認が高速- 「重複除去」「含まれるかの判定」に最適
演習
string[] visitors = { "田中", "佐藤", "田中", "鈴木", "佐藤" };
// TODO: HashSet を使って重複を除いた「実際の来場者数」を "3人" の形式で出力してください
___
- 期待される出力:
3人
ヒント1を見る
new HashSet<string>(visitors) で重複が自動除去されます
ヒント2を見る
var set = new HashSet<string>(visitors); Console.WriteLine($"{set.Count}人");
まとめ
HashSet<T>は重複を許さない集合.Containsでの存在確認が高速- 重複除去・メンバーシップ判定に使う
次回: 追加した順・逆順で取り出すQueueとStackを学びます。