カテゴリ: VB.NET 更新日: 2026/01/30

VB.NETのSortedList完全解説!自動で並び替える便利なコレクションの使い方

VB.NETのSortedListとソート済みコレクションの使い方
VB.NETのSortedListとソート済みコレクションの使い方

先生と生徒の会話形式で理解しよう

生徒

「VB.NETでデータを保存するとき、追加した瞬間にアイウエオ順や数字の小さい順に並べてくれる方法はありますか?」

先生

「それなら『SortedList(ソーテッドリスト)』というコレクションを使うのがぴったりですよ。」

生徒

「ソーテッドリスト…『ソート(並び替え)されたリスト』ということですね!具体的にはどう使うんですか?」

先生

「バラバラにデータを追加しても、自動で整列してくれる仕組みなんです。基本から見ていきましょう!」

1. SortedList(ソーテッドリスト)とは?

1. SortedList(ソーテッドリスト)とは?
1. SortedList(ソーテッドリスト)とは?

VB.NETのSortedList(ソーテッドリスト)とは、複数のデータを「キー(目印)」と「値(中身)」のペアで管理し、なおかつキーの順番で常に自動的に並び替えてくれる特別な入れ物(コレクション)です。

プログラミング未経験の方にわかりやすく例えると、SortedListは「図書室の本棚」のようなものです。新しい本が届いたとき、適当な場所に置くのではなく、背表紙の名前や番号を見て、決められた場所にきれいに差し込みますよね。このように、データを追加した瞬間に「あるべき場所」へ自動整列してくれるのが、この機能の最大の魅力です。自分で行を入れ替える手間が省けるため、名簿管理やランキング表を作るのに非常に適しています。

2. SortedListの宣言と基本的な作り方

2. SortedListの宣言と基本的な作り方
2. SortedListの宣言と基本的な作り方

SortedListを使うためには、まず「どんな種類のキーと値を使うか」を決めて、パソコンに準備をさせます。これを宣言と呼びます。VB.NETでは、以前学習したDictionary(辞書)と同じように、(Of キーの型, 値の型)という書き方で指定します。

例えば、商品のID(整数型:Integer)と商品名(文字列型:String)をセットで扱う場合、以下のように記述します。パソコンに「これからSortedListを使うよ!」と伝える大切なステップです。


' 整数(Integer)をキーにして、文字(String)を保存するSortedListを作る
Dim productList As New SortedList(Of Integer, String)()

' データを追加(IDをバラバラな順番で入れてみます)
productList.Add(3, "電子レンジ")
productList.Add(1, "冷蔵庫")
productList.Add(2, "洗濯機")

' 表示してみると、自動的に1, 2, 3の順に並んでいます
For Each pair As KeyValuePair(Of Integer, String) In productList
    Console.WriteLine("ID:" & pair.Key & " 商品名:" & pair.Value)
Next

ID:1 商品名:冷蔵庫
ID:2 商品名:洗濯機
ID:3 商品名:電子レンジ

3. なぜ自動で並ぶ?「キー」の役割と注意点

3. なぜ自動で並ぶ?「キー」の役割と注意点
3. なぜ自動で並ぶ?「キー」の役割と注意点

SortedListが自動的に並び替える基準にするのが、ペアの左側に指定する「キー(Key)」です。このキーには、数値だけでなく文字列(名前など)を使うこともできます。文字列をキーにすると、辞書のようにアイウエオ順やアルファベット順に並びます。

ここで初心者が気を付けるべきポイントが一つあります。それは、「同じキーを二つ入れることはできない」というルールです。図書室で全く同じ管理番号の本が二冊あると混乱してしまうのと同じで、プログラムも「どっちが正解?」と迷ってエラーになってしまいます。また、キーの中身が「空っぽ(Nothing)」であることも許されません。この一意性(ユニークさ)を保つことが、SortedListを使いこなすコツです。

4. データの取得と存在チェック(ContainsKey)

4. データの取得と存在チェック(ContainsKey)
4. データの取得と存在チェック(ContainsKey)

保存したデータを取り出すときは、キーを指定するだけでOKです。しかし、もし存在しないキーを指定して取り出そうとすると、プログラムがエラーで止まってしまいます。これを防ぐために、「ContainsKey」という便利な命令を使います。

これは、「このキーはリストの中にありますか?」と尋ねる命令で、あればTrue(はい)、なければFalse(いいえ)という答えが返ってきます。これを制御構造(If文)と組み合わせることで、パソコンがフリーズしたり強制終了したりするのを防ぐ「優しいプログラム」になります。


Dim scoreList As New SortedList(Of String, Integer)()
scoreList.Add("佐藤", 85)
scoreList.Add("阿部", 92)

' 「阿部」さんが登録されているか確認
If scoreList.ContainsKey("阿部") Then
    Dim score As Integer = scoreList("阿部")
    Console.WriteLine("阿部さんの点数は " & score & " 点です")
End If

阿部さんの点数は 92 点です

5. インデックス(番号)でデータを取り出す

5. インデックス(番号)でデータを取り出す
5. インデックス(番号)でデータを取り出す

SortedListの面白いところは、Dictionary(辞書)のようにキーで探すだけでなく、配列のように「○番目のデータ」という番号(インデックス)でデータを取り出すこともできる点です。

自動で並び替えられているので、例えば「一番小さいキーを持つデータ(0番目)」や「三番目に大きいデータ(2番目)」といった取得が可能です。これには、Keys(番号)Values(番号)という書き方を使います。プログラミングでは、数は「0」から数え始めるという基本も忘れないようにしましょう。この機能があるおかげで、ランキングのトップ3だけを抜き出すといった処理も簡単に作れます。

6. データの削除(RemoveとRemoveAt)

6. データの削除(RemoveとRemoveAt)
6. データの削除(RemoveとRemoveAt)

不要になったデータを消去する方法は二種類あります。一つはキーを指定して消すRemove、もう一つは何番目かを指定して消すRemoveAtです。どちらも、実行するとそのデータペアがリストから完全に取り除かれ、後ろに並んでいたデータが自動的に前に詰められます。

パソコンのメモリ(作業スペース)をきれいに保つためにも、使わなくなったデータはこまめに消去するのが良い習慣です。ただし、ループ(繰り返し処理)の途中でデータを削除すると、順番がずれてパソコンが混乱することがあるので、慣れるまでは「消してからループを回す」などの工夫が必要です。


Dim members As New SortedList(Of String, String)()
members.Add("C", "会員C")
members.Add("A", "会員A")
members.Add("B", "会員B")

' キー「B」のデータを削除
members.Remove("B")

' 0番目(この場合は一番アルファベットが早いA)を削除
members.RemoveAt(0)

Console.WriteLine("現在の残り人数: " & members.Count)

現在の残り人数: 1

7. SortedListと他のコレクションの使い分け

7. SortedListと他のコレクションの使い分け
7. SortedListと他のコレクションの使い分け

VB.NETには色々なデータの入れ物がありますが、SortedListを選ぶべきなのはどんな時でしょうか?他のコレクションと比較して特徴を理解しましょう。

コレクション名 並び順 得意なこと
List 追加した順 とりあえずデータを貯める、順番を崩さない
Dictionary バラバラ とにかく高速にデータを探し出す
SortedList キーの順 常に見やすく整列させておきたい

SortedListは、データを追加・削除するたびに「どこに入れるか」を計算して並び替えるため、膨大な数(数十万件など)のデータを扱うときはDictionaryよりも少し時間がかかることがあります。しかし、数百~数千件程度のデータであれば、その便利さを最大限に享受できます。「いつでも整理整頓されている」という安心感を持ってプログラムを作りたいときは、ぜひSortedListを活用してみてください。

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本
No.7
Java&Spring記事人気No7
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本
No.8
Java&Spring記事人気No8
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本