VB.NET HashTable 連想配列の使い方

今回は、VB.NETによるHashTable(連想配列)の使い方について紹介していきます。

HashTable(連想配列)は、重複チェック処理をしたいときなどよく使用します。

HashTable(連想配列)とは

HashTable(連想配列)とは、「キー」と「値」を持った配列のことです。

イメージは、下の図のような感じになります。

「キー」に同じ値を入れることはできません。
値」には同じ値を入れることができます。

 

概要はこんな感じです。「キー」と「値」を持った変数ということを理解しておいてください。

 

HashTable データ追加 Add

まずは、ハッシュテーブルを宣言し、データを追加する方法を紹介していきます。

HashTable.Add("キー", "値")

例を見てみましょう。

'変数宣言
Dim hash As New Hashtable
'データ追加
hash.Add("1", "たなか")
hash.Add("2", "すずき")
hash.Add("3", "なかにし")
hash.Add("4", "あおき")

 

これで、HashTableを作ることができました。

 

HashTable データ取得

HashTableに格納した値を取得する方法を紹介します。

HashTable("キー")

「キー」を入れることでデータを取得することができます。

hash("1")   'たなか

と入力すると「たなか」を取得することができます。

 

HashTable 重複チェック ContainsKey

個人的にHashTableの一番の魅力である、「ContainsKey」について紹介します。

HashTableの「キー」には、同じ値を入れることができません。入れるとエラーになってしまいます。

そこで、HashTableにその「キー」が既に含まれているのかを検索する機能があります。

それが「ContainsKey」になります。

hash.ContainsKey("キー")

この結果がTrueの時は、既に「キー」に存在する値であり、Falseの時はまだ存在していない値というのがわかります。

使い方を見てみましょう。

If hash.ContainsKey("1") = True Then
    MsgBox("すでに登録されているデータです。")
End If

このように既に存在する場合にのみ、メッセージボックスを表示することができます。

とても便利な機能なので、ぜひ利用してみてください。

 

ContainsValue

先ほどは、キーの重複を見つける「ContainsKey」を紹介しましたが、「値」の重複を見つける「ContainsValue」もあります。

あまりこちらは使うことがないと思いますが、一応紹介しておきます。

If hash.ContainsValue("たなか") Then
    MsgBox("すでに登録されているデータです。")
End If

 

HashTable ループ方法

ハッシュテーブルに追加したデータを全て取得したい場合は、ループを使って取得しましょう。

For Each key As String In hash.Keys
    Console.WriteLine(key)
    Console.WriteLine(hash(key))
Next

解説
1行目:「HashTable.Keys」でハッシュテーブルの「キー」の値を配列で取得することができます。
    その配列をFor Each文でループさせています。
2行目:keyでは、「1,2,3,4」出力されます。
3行目:hash(key)では「たなか、すずき、なかにし、あおき」が出力されます。

 

For Eachの使い方はこちらで解説しているので、わからない方はこちらも参考にしてみてください。

 

サンプルソース

Dim hash As New Hashtable
hash.Add("1", "たなか")
hash.Add("2", "すずき")
hash.Add("3", "なかにし")
hash.Add("4", "あおき")

MsgBox(hash("1"))

If hash.ContainsKey("1") = True Then
    MsgBox("すでに登録されているデータです。")
End If

If hash.ContainsValue("たなか") Then
    MsgBox("すでに登録されているデータです。")
End If

If hash.Contains("1") Then
    MsgBox("すでに登録されているデータです。")
End If

For Each key As String In hash.Keys
    Console.WriteLine(key)
    Console.WriteLine(hash(key))
Next

 

まとめ

今回は、HashTableを紹介しました。

「キー」と「値」をもつ変数ということを是非覚えておきましょう。

使えると結構便利なのでぜひ利用してみてください。

 

おすすめの記事