VB.NETのList(Of T)入門!初心者でもできる柔軟なデータ管理方法
生徒
「先生、VB.NETでたくさんのデータを保存するとき、配列以外に何か便利な方法はありますか?」
先生
「ありますよ。配列のほかに、List(Of T)(リスト)という便利なデータ型があります。配列よりも柔軟にデータを追加したり削除したりできるんです。」
生徒
「リストって何ですか?配列とどう違うんですか?」
先生
「リストは、データの集合を扱える点では配列と似ていますが、あとから自由に増やしたり減らしたりできる点が大きな違いです。配列は固定長ですが、リストは可変長なんですよ。」
1. VB.NETのList(Of T)とは?
VB.NETのList(Of T)は、複数のデータをまとめて管理するためのコレクションの一種です。ここでいうコレクションとは「データの集まり」を意味します。リストは配列と似ていますが、配列と違って大きさをあらかじめ決める必要がなく、必要に応じてデータを追加したり削除したりできます。
例えば、学校のクラスの生徒名簿をイメージしてみてください。配列は「最初に30人分の枠を確保しておく」イメージですが、リストは「最初は空っぽの名簿を用意して、必要なときに生徒を追加していく」イメージです。途中で転校生が来ても簡単に追加できるし、退学する生徒がいれば削除もできます。
2. List(Of T)の基本的な使い方
VB.NETでリストを使うには、まず次のように宣言します。
Dim numbers As New List(Of Integer)()
この例では、整数(Integer)を扱うリストを作成しています。Of Integerの部分が「このリストには整数を入れる」という意味になります。他にも文字列ならList(Of String)、小数ならList(Of Double)というふうに使えます。
3. データの追加と表示
リストにデータを追加するにはAddメソッドを使います。実際にサンプルコードを見てみましょう。
Dim fruits As New List(Of String)()
fruits.Add("りんご")
fruits.Add("みかん")
fruits.Add("ぶどう")
For Each fruit As String In fruits
Console.WriteLine(fruit)
Next
このコードを実行すると、次のように表示されます。
りんご
みかん
ぶどう
リストに追加した順番で取り出されるのがわかります。
4. データの削除
リストの便利なところは、不要になったデータを簡単に削除できることです。例えば、「みかん」を削除してみましょう。
fruits.Remove("みかん")
For Each fruit As String In fruits
Console.WriteLine(fruit)
Next
実行結果は次のようになります。
りんご
ぶどう
Removeを使うと、指定したデータを簡単に削除できます。
5. データへのアクセス
リストに入っている特定のデータを取り出したいときは、インデックス番号(番号は0から始まります)を使います。
Console.WriteLine(fruits(0)) ' りんごが表示される
Console.WriteLine(fruits(1)) ' ぶどうが表示される
配列と同じように、番号を指定してデータを取り出せます。
6. リストの特徴と便利な操作
リストには、よく使われる便利な機能がいくつかあります。
Countプロパティでデータの数を調べられるContainsメソッドで指定したデータが含まれているか確認できるClearメソッドでリストを空にできる
Console.WriteLine(fruits.Count) ' データの数を表示
Console.WriteLine(fruits.Contains("りんご")) ' Trueが表示される
fruits.Clear() ' リストを空にする
7. 配列とリストの違い
最後に、配列とリストの違いを整理しておきましょう。
| 項目 | 配列(Array) | リスト(List(Of T)) |
|---|---|---|
| サイズ | 最初に決めたら変更できない | 自由に追加や削除ができる |
| 操作のしやすさ | 基本的 | 便利なメソッドが多い |
| 使いやすさ | シンプル | 柔軟で初心者にも扱いやすい |
このように、柔軟にデータを扱いたいときはリストを使うのがおすすめです。配列は決まった数のデータを扱うときに便利ですが、リストは「あとから増えるかもしれない」「削除することもある」といった場面で非常に役立ちます。
まとめ
VB.NETのList(Of T)は、柔軟にデータを扱える強力なコレクションであり、配列では対応しづらい「後からデータが増える」「途中のデータを削除する」「特定の要素を検索する」といった操作を簡単に実現できる点が大きな特徴です。プログラム開発では、入力フォームで登録されるユーザーデータ、商品リスト、ログ履歴、可変長のメッセージデータなど、プロジェクトの仕様変更や運用中のデータ増加に対応することが求められるケースが多く存在します。このような場面で固定長の配列を使うと拡張性が乏しく管理が複雑になる一方、List(Of T)を使えば、追加・削除・検索などの操作が簡潔なコードで実装でき、プログラム全体の保守性を向上させることができます。
配列とリストの違いを整理すると、配列は固定の要素数を前提にしたデータ管理に向いているのに対し、リストは動的要素数を扱う用途に最適です。配列は明確なサイズが決まっているデータ処理に便利で、メモリ効率や処理速度を重視した場面で有利になる場合もあります。一方のList(Of T)は、Add、Remove、Contains、Countといった便利なメソッドを備え、コードの記述量を減らしながら柔軟性を高めてくれるため、初心者にとっても扱いやすく実務でも頻繁に利用されます。
また、List(Of T)はジェネリック型のため、整数・文字列・クラスを含む独自型など幅広いデータ型に対応できます。たとえば商品クラス・ユーザー情報クラス・データベースから取得したレコードの一覧などもリストに格納できるため、現実世界のデータ管理に非常に近い構造で扱える点も大きな利点です。オブジェクト指向の学習を進める上でも、リストを活用してデータのまとまりを整理することは重要な技術となります。
以下は、今回の学習内容を総合的に確認できるサンプルプログラムで、データの追加・削除・検索・表示・メソッド化までを一連で確認できる例です。
まとめサンプルコード:商品リスト管理プログラム
Class Product
Public Property Name As String
Public Property Price As Integer
Public Sub New(n As String, p As Integer)
Name = n
Price = p
End Sub
End Class
Dim products As New List(Of Product)()
' データの追加
products.Add(New Product("りんご", 120))
products.Add(New Product("みかん", 80))
products.Add(New Product("ぶどう", 300))
' データ表示
For Each p As Product In products
Console.WriteLine(p.Name & " : " & p.Price & "円")
Next
' データ検索
If products.Any(Function(p) p.Name = "みかん") Then
Console.WriteLine("みかんはリストに含まれています")
End If
' データ削除
products.RemoveAll(Function(p) p.Name = "みかん")
Console.WriteLine("削除後の商品一覧")
For Each p As Product In products
Console.WriteLine(p.Name)
Next
生徒
「今日の内容で、配列とリストの違いがよく分かりました!データが増える可能性があるときはList(Of T)のほうが便利なんですね。」
先生
「その通りです。リストは実践的なアプリ開発でもよく使われます。特に検索、追加、削除が頻繁にある場合はリストが向いています。」
生徒
「しかもジェネリックなので、商品クラスみたいな複雑なデータもまとめられるのが良いですね!」
先生
「そうです。オブジェクト指向と組み合わせると、より本格的なデータ管理ができるようになります。次はリストを使った検索処理や並び替えにも挑戦してみましょう。」
生徒
「はい!次は並び替えやフィルタリングも試してみます!」