C# HashSetの使い方のサンプル

C#のHashSetの使い方のサンプルです。

確認環境
・Microsoft Visual Studio Community 2017

目次

仕組み HashSetクラス
初期値 要素に初期値をセットする
取得する 要素をすべて取得する(For Each文)
  指定の要素があるかを返す (Containsメソッド)
  要素数を取得する (Countプロパティ)
追加する 要素を追加する (Addメソッド)
削除する 要素を指定して要素を削除する (Removeメソッド)
  すべての要素を削除する (Clearメソッド)

HashSetクラス

var a = new HashSet<string>();

上記はHashSetクラスをインスタンス化して変数aに代入しています。
この変数aは複数の値を持てるようになります。
<>はジェネリクスです。
varキーワードを使用していて型推論が行われます。
変数aの各値のデータ型はstringになります。

 

HashSetの変数の図

要素に初期値をセットする

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>() { "赤", "黄", "青" };

        foreach (var a in colors)
        {
            Console.WriteLine(a);// 赤 黄 青と出力される
        }
    }
}

8行目は、HashSetクラスをインスタンス化し、かつ初期値をセットしています。
10~13行目は、For Each文で値を取得しています。

要素をすべて取得する(For Each文)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>();
        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        foreach (var a in colors)
        {
            Console.WriteLine(a);// 赤 黄 青
        }
    }
}

13行目は、for文ですべての要素を取得しています。

指定の要素があるかを返す (Containsメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>();

        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        Console.WriteLine(colors.Contains("青"));// True
    }
}

14行目は、Containsメソッドで指定の要素があるかを取得しています。
ある場合trueです。

要素数を取得する (Countプロパティ)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>();

        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        Console.WriteLine(colors.Count);// 3
    }
}

14行目は、Countプロパティで要素数を取得しています。

要素を追加する (Addメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        //HashSet<string> colors = new HashSet<string>();
        var colors = new HashSet<string>();

        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        colors.Add("赤");

        foreach (var a in colors)
        {
            Console.WriteLine(a);// 赤 黄 青
        }
    }
}

9行目は、HashSetクラスをインスタンス化しています。
代入する変数はvarで宣言できます。8行目のようにデータの型でも可能です。
11~13行目は、Addメソッドで値を追加しています。
15行目もAddメソッドで値を追加していますが、重複した値のため追加できません。
17~20行目は、foreach文で値を取得しています。

要素を指定して要素を削除する (Removeメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>();

        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        colors.Remove("黄");
        foreach (var a in colors)
        {
            Console.WriteLine(a);// 赤 青
        }
    }
}

14行目は、Removeメソッドで値を指定して削除しています。

すべての要素を削除する (Clearメソッド)

using System;
using System.Collections.Generic;

class Test1
{
    static void Main()
    {
        var colors = new HashSet<string>();

        colors.Add("赤");
        colors.Add("黄");
        colors.Add("青");

        colors.Clear();
        Console.WriteLine(colors.Count);// 0
    }
}

14行目は、Clearメソッドですべての要素を削除しています。

関連の記事

C# Listの使い方のサンプル
C# Dictionaryの使い方のサンプル

△上に戻る