VB.NETのHashSetの使い方のサンプルです。
確認環境 ・Microsoft Visual Studio Community 2019 |
目次
仕組み | HashSetクラス |
初期値 | 要素に初期値をセットする |
取得する | 要素をすべて取得する(For Each文) |
指定の要素があるかを返す (Containsメソッド) | |
要素数を取得する (Countプロパティ) | |
追加する | 要素を追加する (Addメソッド) |
削除する | 要素を指定して要素を削除する (Removeメソッド) |
すべての要素を削除する (Clearメソッド) |
HashSetクラス
Dim a As New HashSet(Of String) |
上記はHashSetクラスをインスタンス化して変数aに代入しています。
この変数aは複数の値を持てるようになります。
各値のデータ型はStringです。((Of String)のため)
HashSetの変数の図
- 重複したオブジェクトは追加できません。
- 順序はありません。
- 以下はMicrosoftのHashSetクラスのリンクです。
https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.hashset-1?view=netframework-4.8
要素に初期値をセットする
Module Module1
Sub Main()
Dim a As New HashSet(Of String) From {
{"赤"},
{"黄"},
{"青"}
}
For Each b In a
Console.WriteLine(b) '赤 黄 青と出力される
Next
End Sub
End Module
3~7行目は、HashSetクラスをインスタンス化し、かつ初期値をセットしています。
9~11行目は、For Each文で値を取得しています。
要素をすべて取得する(For Each文)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
For Each b In a
Console.WriteLine(b) '赤 黄 青と出力される
Next
End Sub
End Module
8行目は、for文ですべての要素を取得しています。
指定の要素があるかを返す (Containsメソッド)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
Console.WriteLine(a.Contains("青")) 'Trueと出力される
Console.WriteLine(a.Contains("黒")) 'Falseと出力される
End Sub
End Module
8行目は、Containsメソッドで指定の値が存在するが確認しています。存在するのでTrueです。
9行目は、指定の値が存在しないのでFalseです。
要素数を取得する (Countプロパティ)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
Console.WriteLine(a.Count) '3と出力される
End Sub
End Module
8行目は、Countプロパティで要素数を取得しています。
要素を追加する (Addメソッド)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
a.Add("赤")
For Each b In a
Console.WriteLine(b) '赤 黄 青と出力される
Next
End Sub
End Module
5~7行目は、Addメソッドで値を追加しています。
9行目もAddメソッドで値を追加していますが、重複した値のため追加できません。
11~13行目は、For Each文で値を取得しています。
要素を指定して要素を削除する (Removeメソッド)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
a.Remove("黄")
For Each b In a
Console.WriteLine(b) '赤 青と出力される
Next
End Sub
End Module
8行目は、Removeメソッドで値を指定して削除しています。
すべての要素を削除する (Clearメソッド)
Module Module1
Sub Main()
Dim a As New HashSet(Of String)
a.Add("赤")
a.Add("黄")
a.Add("青")
a.Clear()
Console.WriteLine(a.Count) '0と出力される
End Sub
End Module
8行目は、Clearメソッドですべての要素を削除しています。
関連の記事