CodeZine(コードジン)

特集ページ一覧

.NET Frameworkの代表的なコレクションと使い方

System.Collections名前空間直下の主なコレクション

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/03/23 14:00
目次

SortedList(ソートキー指定型リスト)

 SortedListは、Hashtableのようにキーと値の組み合わせを格納する、リスト構造をもったコレクションです。Hashtabelがキーを値へアクセスするための要素として扱ったのに対し、SortedListではキーをソートのための要素として扱います。ArrayListでは格納している値によって、Sortメソッドが要素を意図したとおりに並べ替えてくれるとは限らないと書きましたが、SortedListではキーにソート可能な値を与えておくことによって、どのような値を保持していても思い通りの順序に並べ替えることができます。

SortedListサンプルプログラムの解説

サンプルプログラムの一部抜粋
SortedList sl = new SortedList();
sl.Add(0, "最初のオブジェクト");
sl.Add(1, 3.1415);
sl.Add(2, "Third Object");
sl[3] = true;
sl[4] = false;

Console.WriteLine("要素の数{0}", sl.Count);
for (int i = 0; i < sl.Count; i++)
{
    Console.WriteLine("{0}番目の要素:{1}", i+1, sl[i]);
}
サンプルプログラムの実行結果
要素の数5
1番目の要素:最初のオブジェクト
2番目の要素:3.1415
3番目の要素:Third Object
4番目の要素:True
5番目の要素:False

 サンプルでは単純に整数型オブジェクトをキーに指定し、値に様々なオブジェクトを格納させています。キーが標準の比較演算子で順序よく並べることのできるオブジェクトなので、値がどのようなものであろうと、意図した順番通り並べ替えることができている様子をご覧いただけると思います。

 SortedListもHashtabele同様、登録されていないキーに対してはnull参照を返します。また、値の登録時にキーがnullではいけないというのも同じです。コンストラクタではあらかじめリストの大きさを指定できる点も、Hashtableと同じです。

SortedListの基本的な使い方

 基本的には、

  • Add(key, value)でキーと値を格納する
  • SortedList[key]として値を参照する
  • Remove(key)で指定要素を削除する

 という、Hashtableとほとんど同じ使い方をします。参照のスタイルを借りてキーと値のペアを登録できるところも同じです。コンストラクタにICompareインターフェイスを実装した比較演算子を渡しておけば、標準の比較演算子では大小を決めることができないようなオブジェクトもキーとして選択可能です。

SortedListを使う上での注意点

 MSDNによれば、foreachステートメントで用いる際には、DictionaryEntryを用いて

foreach(DictionaryEntry d in targetSortedList){...}

 のような形でアクセスする必要があると書かれています。これはforeachステートメントがコレクション内のデータの型を相手に順次アクセスをするという性質に由来するもので、キーと値のペアでデータを格納しているSortedListでは、一意に型を決定することができないことに起因しています。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 太田 晃(オオタ アキラ)

    &nbsp;ブログ(http://repse.blogspot.com/)では、coLinux上にMinGWを用いてクロスコンパイル環境を構築し、そのうえでSDLやOpenGLを使ってWindows向けのプログラムを書くとか、海外のソフトウェアを(勝手に)日本語化するとか、Windowsのインデック...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5