本文へスキップ
BecomeCoder

C#文法コース · 第3章 コレクション · レッスン25

HashSet

ブラウザで完結

導入

「重複を排除したい」「ある値が含まれるか高速に調べたい」——そのための集合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での存在確認が高速
  • 重複除去・メンバーシップ判定に使う

次回: 追加した順・逆順で取り出すQueueStackを学びます。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。