配列処理

[VB.NET] Dictionaryとは?連想配列の使い方と具体例

今回は、VB.NETのDictionary(連想配列)の使い方と具体例をご紹介します。

Dictionary(Of TKey, TValue)とは?

Dictionary(Of TKey, TValue)は、キーと値のペアを効率的に管理できるコレクションです。

従来の配列やリストのようにインデックスで管理するのではなく、キーを用いて直接にアクセスできるため、たとえば「名前」と「年齢」や「ID」と「オブジェクト」など、意味づけられたデータを扱う場合に有用です。

内部ではハッシュテーブルを利用しているため、キーから値へのアクセスが高速である点が大きな特徴です。

基本的な使い方

まずは、宣言と初期化の方法から確認してみます。

Dictionaryを使う際は、キーの型を指定して宣言します。

Dictionaryでよく使う主なメソッドと操作は以下のとおりです。

  • Add:新しいキーと値のペアを追加(重複キーがあると例外)
  • インデクサ(dict(key) = value):既存キーの場合は上書き、新規キーの場合は追加
  • ContainsKey:キーの存在を確認
  • Remove:指定したキーと値のペアを削除
  • TryGetValue:キーが存在するかを確認しつつ取得

項目の追加と更新

Dictionaryへ項目を追加する方法は複数あります。

上記のようにインデクサを使うと、既に存在するキーの場合は値を更新、存在しないキーの場合は新しい項目が追加されます。

一方、Addメソッドは重複キーの追加ができない点に注意してください。

値の取得と削除

キーを指定して値を取り出す場合は、以下のようにインデクサを使います。

ただし、存在しないキーを指定するとKeyNotFoundExceptionが発生します。

そのため、事前にContainsKeyでチェックするか、TryGetValueを活用すると安全です。

項目を削除するときは、Removeメソッドを使います。

実用的な例

ここでは、ユーザー名と年齢を管理するコード例を挙げます。

Dictionaryを活用して、追加・更新・削除・全件出力を行う流れを見てみましょう。

上記コードを実行すると、以下のような出力結果が得られます。

実行結果

Alice の年齢は 30 歳です。
ユーザー名: Alice, 年齢: 30
ユーザー名: Bob, 年齢: 26
ユーザー名: Charlie, 年齢: 35
ユーザー名: Diana, 年齢: 28

活用時の注意点

Dictionaryを使う際に意識したいポイントをまとめます。

  • 重複キー:Addメソッドを使って既に存在するキーを追加するとArgumentExceptionが発生するので注意が必要です。
  • 存在しないキーへのアクセス:存在しないキーを参照するとKeyNotFoundExceptionが発生するため、ContainsKeyやTryGetValueを活用してエラーを防ぎます。
  • 要素の順序:Dictionaryは要素の順序を保証しません。順序が必要な場合はSortedDictionaryやListなど別の手段を検討します。
  • スレッドセーフ:複数のスレッドから同時に操作する際は、ロックなどの同期を考慮する必要があります。
  • メモリ使用量:ハッシュテーブルを利用しているため、扱うデータ量が膨大になる場合はメモリ管理を念頭に置きます。

まとめ

VB.NETのDictionaryは、キーを使って素早く値にアクセスできる便利なコレクションです。

使いこなすためにはAddやインデクサを使った追加・更新の挙動を理解し、存在チェックや例外処理を適切に行うことが重要です。

用途に合った活用方法を身につけて、プログラムをより柔軟に管理してみてください。