【VB.NET】HashSet の使い方をわかりやすく説明します。

VB.NET
この記事は約6分で読めます。

【VB.NET】HashSet の使い方をわかりやすく説明します。

コレクションクラスの1つHashSet <T>クラス(System.Collections.Generic名前空間)を説明します。

HashSet <T>は、List<T> と同じくジェネリクス型の引数を受け取ります。

最大の特徴は、重複した値を保持しないことです。

宣言・初期化

宣言の仕方は2通りあります。

処理内容によって好きな方で大丈夫です。

注意点は、インスタンス化するさいに引数となる型を指定してあげる事です。

宣言の後に項目設定する方法

' 宣言
Dim 変数名 As HashSet(Of 型名) = New HashSet(Of 型名)
' 項目設定
変数名.Add(値1)

宣言と同時に項目設定する方法

' 宣言 + 項目設定
Dim 変数名 As HashSet(Of 型名) = New HashSet(Of 型名) From {
          値1,
          値2,
          値3}

 

要素を取得する

各項目には番号が付いていて「0」から始まります。番号は、インデックス番号または、要素番号といいます。

インデックス番号を指定してアクセスします。

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        Console.WriteLine(hs(0)) 'あ
        Console.WriteLine(hs(1)) 'い
        Console.WriteLine(hs(2)) 'う
        Console.WriteLine(hs(3)) ' 何も表示されない・エラーにもならない 

    End Sub
End Module
HashSetでは、範囲外のインデックスを指定してもエラーになりません

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

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        Console.WriteLine(hs.Count) ' 3

        hs.Add("え") '要素を追加
        Console.WriteLine(hs.Count) ' 4

    End Sub

End Module

 

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

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        Console.WriteLine(hs.Contains("あ")) ' True
        Console.WriteLine(hs.Contains("え")) ' False

    End Sub

End Module

 

要素をすべて取得する(繰り返し処理)

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        'For 文
        For i = 0 To hs.Count - 1
            Console.WriteLine(hs(i)) 'あ い うが出力される
        Next

        'For Each 文
        For Each h As String In hs
            Console.WriteLine(h) 'あ い うが出力される
        Next

    End Sub
End Module

 

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

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        '重複した値
        hs.Add("あ")

        For Each h In hs
            Console.WriteLine(h) ' あ い うが出力される
        Next

        '重複していない値
        hs.Add("え")

        For Each h In hs
            Console.WriteLine(h) ' あ い う えが出力される
        Next

    End Sub

End Module
リストと違い、重複した値は追加出来ません。

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

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        '削除したい値
        hs.Remove("い")

        For Each h In hs
            Console.WriteLine(h) ' あ うが出力される
        Next

    End Sub

End Module

 

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

Module Module1
    Sub Main()

        Dim hs As HashSet(Of String) =
            New HashSet(Of String) From {"あ", "い", "う"}

        '要素を全部削除
        hs.Clear()

        Console.WriteLine(hs.Count) ' 0

    End Sub

End Module

 

コメント

タイトルとURLをコピーしました