PR

 SortedListは,キーによって並べ替えられ,キーとインデックスを使ってアクセスできる配列である。キーと値のペアとして扱う。インデックスは0から始まる。

 SortedListオブジェクトはリストの要素を格納するために,キーを格納する配列と,キーに関連づける値を格納する配列の,合計2つの配列を内部に保持する。SortedListオブジェクトの各要素はキーと値のペアであり,DictionaryEntryオブジェクトとしてアクセスできる。キーにnull参照は使用できず,重複できない。値にはnull参照を格納できる。

 SortedListオブジェクトの容量は,SortedListオブジェクトが保持可能な要素数である。SortedListオブジェクトのデフォルトの初期容量は16である。SortedListオブジェクトに要素を追加すると,必要に応じて容量が自動的に増加する。要素を削除しても容量は減らない。容量を減らすには,TrimExcessメソッドを呼び出すか,Capacityプロパティを明示的に設定する。

 要素を追加すると,その要素は並べ替えられた後にSortedListオブジェクトに挿入される。それに応じてインデックスも調整される。要素が削除されると,それに応じてインデックスも調整される。つまり,特定のキーと値のペアのインデックスは,SortedListオブジェクトに要素が追加されたり,削除されたりすると,変わることがある。

 値がobject型のSystem.Collections.SortedListクラスと異なり,Genericsを利用したSystem.Collections.Generic.SortedListクラスは,特定のデータ型のみを値として格納できる。例えばstring型のリストを利用しようとした場合,System.Collections.SortedListオブジェクトで実装すると,値にstring型以外のデータも格納できてしまう。それに対してSystem.Collections.Generic.SortedListオブジェクトを使えば,格納できる値を特定のデータ型(この例の場合はstring型)に限定することができ,コードの安全性を高められる。

サンプルコードを見る


名前空間
System.Collections.Generic
対応バージョン
.NET Framework 2.0
.NET Compact Framework 2.0
主なプロパティ
Capacity
SortedListオブジェクトに格納できる要素の数(容量)を取得または設定する。

Count
SortedListオブジェクトに実際に格納されている要素の数を取得する。

Item
指定したインデックスにある要素を取得または設定する。C#言語ではインデクサとして働き,[ ]にキーを指定することで,それが関連づけられている値を取得できる。キーにnull参照を指定すると,ArgumentNullException例外が発生する。また,キーに指定した値がSortedListオブジェクト内に見つからなかった場合,整数型には0,bool型にはFalse,参照型にはnull参照を返す。

Keys
SortedListオブジェクト内のキーを取得する。

Values
SortedListオブジェクト内の値を取得する。

主なメソッド
Add
第1引数に指定したキー,および第2引数に指定した値のペアを要素として,SortedListオブジェクトに追加する。SortedListオブジェクトの要素数が既に容量と等しい場合は,自動的にSortedListオブジェクトの容量が増加する。キーがnull参照の場合はArgumentNullException例外が発生する。指定したキーが既にSortedListオブジェクトに存在する場合は,ArgumentException例外が発生する。

Clear
SortedListオブジェクトからすべての要素を削除する。これにより要素数は0になるが,容量は変化しない。SortedListオブジェクトの容量を削減するには,TrimExcessメソッドを呼び出すか,Capacityプロパティを直接設定する。要素数が0のSortedListオブジェクトに対してTrimExcessメソッドを実行すると,SortedListオブジェクトの容量は初期値に設定される。

ContainsKey
指定したオブジェクトがSortedListオブジェクト内のキーに存在するかどうかを調べる。引数に指定したオブジェクトがSortedListオブジェクト内のキーに存在する場合はTrue,それ以外の場合はFalseを返す。

ContainsValue
指定したオブジェクトがSortedListオブジェクト内の値に存在するかどうかを調べる。引数に指定したオブジェクトがSortedListオブジェクト内の値に存在する場合はTrue,それ以外の場合はFalseを返す。

IndexOfKey
引数に指定したキーに対して,SortedListオブジェクト内の,0 から始まるインデックス番号を返す。

IndexOfValue
SortedListオブジェクト内の値の中で,引数に指定したオブジェクトが,最初に出現するインデックス番号を返す。インデックス番号は0から始まる。見つからなかった場合は-1を返す。

Remove
指定したキーを持つ要素をSortedListオブジェクトから削除する。

RemoveAt
SortedListオブジェクトの,指定したインデックスにある要素を削除する。

TrimExcess
SortedListオブジェクトに格納されている実際の要素数が現在の容量の90%未満の場合に,容量をその数に設定し直す。実際の要素数が現在の容量の90%以上の場合は,メモリーの再割り当てとコピーのコスト増大を防ぐため,何もしない。Removeメソッドなどを呼び出してSortedListオブジェクト内の要素が削除されても,そのままではSortedListオブジェクトの容量は変わらない。容量を削減するときに,TrimExcessメソッドを呼び出す。