ハッシュテーブルは、キーと値を保持しているコレクションです。

値は文字列型・数値型・オブジェクト型の様々なデータを保持できます。

キーは文字列扱いで、値はオブジェクト扱いなので値を取り出すときはキャストします。

使用するには、Imports System.Collectionsを追加します。

項目を追加する

Dim hTbl As New Hashtable()

'文字列型の場合
hTbl.Add("H", "平成")
hTbl.Add("S", "昭和")
hTbl.Add("M", "明治")
hTbl.Add("T", "大正")


'数値型の場合
hTbl.Add("H", 100)
hTbl.Add("S", 200)
hTbl.Add("M", 300)
hTbl.Add("T", 400)

キーや値の存在チェック

ContainsValueメソッドおよびContainsKeyメソッド、存在チェックをする。

'値が存在すれば、Trueを、存在しなければ、Falseを返します。
If hTbl.ContainsValue("昭和") Then
    MessageBox.Show("値は存在します")
End If

'値が存在すれば、Trueを、存在しなければ、Falseを返します。
If hTbl.ContainsKey("H") Then
    MessageBox.Show("キーは存在します")
End If

テーブル内の値の取得する

値取得にはキャストをします。

文字列の場合
Dim str1 As String = CStr(hTbl("H"))
または
Dim str1 As String = CType(hTbl(H"), String)

数値の場合
Dim val1 As Integer = CInt(hTbl("H"))
または
Dim val1 As Integer = CType(hTbl("H"), Integer)

テーブルのループ

Dim hTbl As New Hashtable()

'文字列型
hTbl.Add("H", "平成")
hTbl.Add("S", "昭和")
hTbl.Add("M", "明治")
hTbl.Add("T", "大正")

Dim s As String = ""

'キーによるループ
For Each key As String In hTbl.Keys
    s &= String.Format("{0}:{1}", key, hTbl(key)) & System.Environment.NewLine
Next
MessageBox.Show(s)

'値によるループ
For Each val As String In hTbl.Values
    s &= String.Format("{0}", val) & System.Environment.NewLine
Next
MessageBox.Show(s)

'テーブルのループ
For Each de As DictionaryEntry In hTbl
    s &= String.Format("{0}:{1}", de.Key, de.Value) & System.Environment.NewLine
Next
MessageBox.Show(s)