VB.NETのDictionary(Of TKey, TValue)入門!初心者でもわかる辞書型の使い方と活用例
生徒
「先生、VB.NETでリストや配列以外にデータを管理する便利な方法ってありますか?」
先生
「もちろんありますよ。その一つがDictionary(Of TKey, TValue)、つまり辞書型です。キーと値をセットにしてデータを管理できるので、探したい情報をすぐに取り出せます。」
生徒
「キーと値って何ですか?リストとはどう違うんですか?」
先生
「リストは順番でデータを管理しますが、辞書型は名前を付けて管理できるのが特徴です。例えば、学生番号をキーにして名前を保存する、といった使い方ができますよ。」
1. Dictionary(Of TKey, TValue)とは?
VB.NETのDictionary(Of TKey, TValue)は、データを「キー」と「値」のペアで管理するコレクションです。「キー」はデータを探すための目印、「値」は実際のデータ本体です。
例えば学校の名簿を考えてみましょう。学籍番号をキーにして、学生の名前を値として保存すれば、「学籍番号1001の学生は誰?」と簡単に調べられるのです。
配列やリストは「順番」で管理するのに対し、辞書型は「名前付き」で管理できるため、検索がとても速く効率的です。
2. Dictionaryの基本的な宣言
辞書型を使うには、キーと値の型を指定して宣言します。
Dim students As New Dictionary(Of Integer, String)()
この例では「キーは整数型」「値は文字列型」という意味です。つまり「学籍番号(整数)をキーにして、名前(文字列)を値にする」辞書になります。
3. データの追加
辞書にデータを追加するには、Addメソッドを使います。
students.Add(1001, "田中")
students.Add(1002, "佐藤")
students.Add(1003, "鈴木")
このように、学籍番号をキーにして、それに対応する名前を登録できます。もし同じキーを2回追加しようとするとエラーになります。キーは一意(ユニーク)でなければならないためです。
4. データの取り出し
キーを指定すると、そのキーに対応する値を取り出せます。
Console.WriteLine(students(1001)) ' 出力: 田中
Console.WriteLine(students(1002)) ' 出力: 佐藤
このように、学籍番号を指定するだけで、すぐに名前を取得できます。リストのようにインデックス番号を気にする必要はありません。
5. データの削除
不要になったデータは、Removeメソッドで削除できます。
students.Remove(1002)
これで、学籍番号1002に対応するデータが削除されます。
6. データの存在確認
あるキーが存在するかどうかを確認したいときは、ContainsKeyを使います。
If students.ContainsKey(1003) Then
Console.WriteLine("学籍番号1003は登録されています")
End If
逆に、値の存在を調べたい場合はContainsValueを使います。
7. すべてのデータを繰り返し処理
辞書に保存されたすべてのキーと値を取り出すには、For Eachを使います。
For Each pair As KeyValuePair(Of Integer, String) In students
Console.WriteLine("学籍番号:" & pair.Key & " 名前:" & pair.Value)
Next
実行結果は次のようになります。
学籍番号:1001 名前:田中
学籍番号:1003 名前:鈴木
8. 辞書型の便利な使い道
辞書型は日常生活のいろいろな場面をプログラムに取り込むときに役立ちます。
- 社員番号と社員名を対応させる
- 商品コードと価格を対応させる
- 郵便番号と住所を対応させる
例えば商品コードと価格を管理する辞書を作れば、「商品コード1234の価格はいくら?」とすぐに調べられます。検索や照合がとても速いので、データが多くても効率的に扱えます。
9. 配列・リストと辞書型の違い
最後に、配列・リスト・辞書型の違いを整理しておきましょう。
| 項目 | 配列 | リスト | 辞書型 |
|---|---|---|---|
| データの管理方法 | 順番で管理 | 順番で管理 | キーと値で管理 |
| サイズ | 固定 | 可変 | 可変 |
| 検索方法 | インデックス番号 | インデックス番号 | キーを指定して検索 |
| 特徴 | シンプルで軽量 | 柔軟で便利 | 検索や対応付けに最適 |
このように、辞書型は「データを名前付きで管理したい」「特定の情報をすぐに検索したい」といった場面でとても便利です。
まとめ
VB.NETのDictionary(Of TKey, TValue)は、データをキーと値の組み合わせで効率よく管理できる強力なコレクションであり、順番ではなく名前で探すという日常的な発想をそのままプログラムに落とし込める点が大きな魅力です。学籍番号と名前、商品コードと価格、社員番号と氏名など、さまざまな場面でデータを素早く検索したいときに辞書型は非常に便利で、リストや配列では実現しづらい「目印で検索する」という操作が自然に行えるようになります。今回の記事では、辞書型の初期化方法、データの追加、削除、検索、存在確認、繰り返し処理といった基本機能をひとつずつ確認しながら、辞書型の仕組みと活用方法をわかりやすく整理しました。 さらに辞書型では、キーが一意であるという性質が検索効率の向上に直結しており、大量のデータが存在する場合でも、必要な情報を瞬時に取り出せるという点が他のコレクションに比べて大きな利点となります。たとえば、店舗の商品情報を辞書型で管理しておけば、「商品コードから価格を取り出す」といった処理を高速に行うことができ、実務的なアプリケーションでも多く使われています。一方でキーが重複するとエラーになる、順序が保証されないといった特徴もあるため、データの性質を理解した上で使い分けることが重要です。 ここでは、辞書型の実際の使い方を振り返るため、記事と同じような形式の簡易的なサンプルコードを掲載します。辞書型の動作イメージがよりつかめるはずです。
Dim items As New Dictionary(Of String, Integer)()
items.Add("りんご", 120)
items.Add("みかん", 80)
items.Add("ぶどう", 300)
Console.WriteLine("りんごの価格は " & items("りんご") & " 円です")
If items.ContainsKey("みかん") Then
Console.WriteLine("みかんは登録されています")
End If
For Each data As KeyValuePair(Of String, Integer) In items
Console.WriteLine("商品名:" & data.Key & " 価格:" & data.Value)
Next
このサンプルでは、果物名をキー、価格を値として登録し、検索・存在確認・繰り返し処理まで一連の流れを実践しています。辞書型を使うことで、名前を指定して価格を調べたり、全データを一覧表示したりといった操作が短いコードで実現できるため、業務アプリケーションやデータ管理システムでも頻繁に採用されるデータ構造です。また、配列やリストではインデックス番号でアクセスする必要がありますが、辞書型では意味のある名前を使ってアクセスできるため、コードの可読性や保守性が高まります。 辞書型は、データ量が増えても検索速度が落ちにくいという点でも優れており、大量データを扱う場面でも安心して使用できます。データの追加や削除も簡単で、実行中に柔軟にデータ構造を変化させたい場合にも向いています。今回の記事で、辞書型が配列やリストとは異なる視点からデータを管理できること、そしてキーと値で構造的に整理されたデータを扱えることが理解できたはずです。まずは身近な「対応関係」を辞書型で表現する練習をしてみると、より直感的にその便利さを実感できるでしょう。
生徒
「辞書型ってキーで検索できるから、リストよりずっと便利な場面が多いですね。名前でデータを取り出せるのが、とても使いやすいと思いました!」
先生
「そうですね。辞書型は特定の情報を素早く探したいときに最適です。学籍番号、商品コード、社員番号など、現実の物事をそのまま表現できるのが強みです。」
生徒
「ContainsKeyやRemoveも便利で、データの管理がしやすいんだなと感じました。For Eachで全部のデータを取り出せるのも良いですね。」
先生
「まさにその通りです。辞書型を使いこなせると、VB.NETで扱えるデータ構造の幅が大きく広がります。用途に合わせて配列・リスト・辞書型を選べるようになると、さらに実践的なプログラムが組めるようになりますよ。」
生徒
「もっといろいろなデータを辞書型で管理してみたいです!商品情報や生徒名簿みたいな仕組みを作る練習もしてみます。」
先生
「ぜひ挑戦してみてください。辞書型は実務でもとてもよく使われるので、身につけておくと役に立ちますよ。」