【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
コメント