今回は、VB.NETのDictionary(連想配列)の使い方と具体例をご紹介します。
Dictionary(Of TKey, TValue)とは?
Dictionary(Of TKey, TValue)は、キーと値のペアを効率的に管理できるコレクションです。
従来の配列やリストのようにインデックスで管理するのではなく、キーを用いて直接値にアクセスできるため、たとえば「名前」と「年齢」や「ID」と「オブジェクト」など、意味づけられたデータを扱う場合に有用です。
内部ではハッシュテーブルを利用しているため、キーから値へのアクセスが高速である点が大きな特徴です。
基本的な使い方
まずは、宣言と初期化の方法から確認してみます。
Dictionaryを使う際は、キーと値の型を指定して宣言します。
1 2 3 4 5 6 7 8 9 |
' キーが文字列、値が整数の場合 Dim dict As New Dictionary(Of String, Integer) ' 複数の初期データを設定する場合 Dim dict2 As New Dictionary(Of String, Integer) From { {"apple", 10}, {"banana", 20}, {"cherry", 15} } |
Dictionaryでよく使う主なメソッドと操作は以下のとおりです。
- Add:新しいキーと値のペアを追加(重複キーがあると例外)
- インデクサ(dict(key) = value):既存キーの場合は上書き、新規キーの場合は追加
- ContainsKey:キーの存在を確認
- Remove:指定したキーと値のペアを削除
- TryGetValue:キーが存在するかを確認しつつ取得
項目の追加と更新
Dictionaryへ項目を追加する方法は複数あります。
1 2 3 4 5 |
' Addメソッド:既に存在するキーを追加しようとすると例外が発生 dict.Add("orange", 12) ' インデクサ:既存キーなら上書き、新規キーなら追加 dict("banana") = 25 |
上記のようにインデクサを使うと、既に存在するキーの場合は値を更新、存在しないキーの場合は新しい項目が追加されます。
一方、Addメソッドは重複キーの追加ができない点に注意してください。
値の取得と削除
キーを指定して値を取り出す場合は、以下のようにインデクサを使います。
1 |
Dim value As Integer = dict("apple") |
ただし、存在しないキーを指定するとKeyNotFoundExceptionが発生します。
そのため、事前にContainsKeyでチェックするか、TryGetValueを活用すると安全です。
項目を削除するときは、Removeメソッドを使います。
1 |
dict.Remove("cherry") |
実用的な例
ここでは、ユーザー名と年齢を管理するコード例を挙げます。
Dictionaryを活用して、追加・更新・削除・全件出力を行う流れを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
Module Module1 Sub Main() ' Dictionaryの宣言(キー:ユーザー名、値:年齢) Dim userAges As New Dictionary(Of String, Integer) From { {"Alice", 30}, {"Bob", 25}, {"Charlie", 35} } ' 新規ユーザーの追加 userAges.Add("Diana", 28) ' 既存ユーザーの年齢を更新 userAges("Bob") = 26 ' キーの存在を確認して値を取得 If userAges.ContainsKey("Alice") Then Console.WriteLine("Alice の年齢は " & userAges("Alice") & " 歳です。") End If ' 全項目の出力 For Each user As KeyValuePair(Of String, Integer) In userAges Console.WriteLine("ユーザー名: {0}, 年齢: {1}", user.Key, user.Value) Next ' ユーザー削除 userAges.Remove("Charlie") End Sub End Module |
上記コードを実行すると、以下のような出力結果が得られます。
Alice の年齢は 30 歳です。
ユーザー名: Alice, 年齢: 30
ユーザー名: Bob, 年齢: 26
ユーザー名: Charlie, 年齢: 35
ユーザー名: Diana, 年齢: 28
活用時の注意点
Dictionaryを使う際に意識したいポイントをまとめます。
- 重複キー:Addメソッドを使って既に存在するキーを追加するとArgumentExceptionが発生するので注意が必要です。
- 存在しないキーへのアクセス:存在しないキーを参照するとKeyNotFoundExceptionが発生するため、ContainsKeyやTryGetValueを活用してエラーを防ぎます。
- 要素の順序:Dictionaryは要素の順序を保証しません。順序が必要な場合はSortedDictionaryやListなど別の手段を検討します。
- スレッドセーフ:複数のスレッドから同時に操作する際は、ロックなどの同期を考慮する必要があります。
- メモリ使用量:ハッシュテーブルを利用しているため、扱うデータ量が膨大になる場合はメモリ管理を念頭に置きます。
まとめ
VB.NETのDictionaryは、キーを使って素早く値にアクセスできる便利なコレクションです。
使いこなすためにはAddやインデクサを使った追加・更新の挙動を理解し、存在チェックや例外処理を適切に行うことが重要です。
用途に合った活用方法を身につけて、プログラムをより柔軟に管理してみてください。