次の方法で共有


SortedList クラス

定義

キーによって並べ替えられたキーと値のペアのコレクションを表し、キーとインデックスでアクセスできます。

public ref class SortedList : System::Collections::IDictionary
public ref class SortedList : ICloneable, System::Collections::IDictionary
public class SortedList : System.Collections.IDictionary
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
public class SortedList : ICloneable, System.Collections.IDictionary
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
type SortedList = class
    interface ICollection
    interface IEnumerable
    interface IDictionary
    interface ICloneable
[<System.Serializable>]
type SortedList = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ICloneable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
    interface IDictionary
    interface ICollection
    interface IEnumerable
    interface ICloneable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
継承
SortedList
属性
実装

次のコード例は、 SortedList オブジェクトを作成して初期化する方法と、そのキーと値を出力する方法を示しています。

using System;
using System.Collections;

public class SamplesSortedList2
{
    public static void Main()
    {
        // Creates and initializes a new SortedList.
        SortedList mySL = new SortedList();
        mySL.Add("Third", "!");
        mySL.Add("Second", "World");
        mySL.Add("First", "Hello");

        // Displays the properties and values of the SortedList.
        Console.WriteLine("mySL");
        Console.WriteLine("  Count:    {0}", mySL.Count);
        Console.WriteLine("  Capacity: {0}", mySL.Capacity);
        Console.WriteLine("  Keys and Values:");
        PrintKeysAndValues(mySL);
    }

    public static void PrintKeysAndValues(SortedList myList)
    {
        Console.WriteLine("\t-KEY-\t-VALUE-");
        for (int i = 0; i < myList.Count; i++)
        {
            Console.WriteLine("\t{0}:\t{1}", myList.GetKey(i), myList.GetByIndex(i));
        }
        Console.WriteLine();
    }
}
/*
This code produces the following output.

mySL
  Count:    3
  Capacity: 16
  Keys and Values:
    -KEY-    -VALUE-
    First:    Hello
    Second:    World
    Third:    !
*/
Imports System.Collections

Public Class SamplesSortedList    
    
    Public Shared Sub Main()
        
        ' Creates and initializes a new SortedList.
        Dim mySL As New SortedList()
        mySL.Add("Third", "!")
        mySL.Add("Second", "World")
        mySL.Add("First", "Hello")
        
        ' Displays the properties and values of the SortedList.
        Console.WriteLine("mySL")
        Console.WriteLine("  Count:    {0}", mySL.Count)
        Console.WriteLine("  Capacity: {0}", mySL.Capacity)
        Console.WriteLine("  Keys and Values:")
        PrintKeysAndValues(mySL)
    End Sub
    
    Public Shared Sub PrintKeysAndValues(myList As SortedList)
        Console.WriteLine(ControlChars.Tab & "-KEY-" & ControlChars.Tab & _
           "-VALUE-")
        Dim i As Integer
        For i = 0 To myList.Count - 1
            Console.WriteLine(ControlChars.Tab & "{0}:" & ControlChars.Tab & _
               "{1}", myList.GetKey(i), myList.GetByIndex(i))
        Next i
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' mySL
'   Count:    3
'   Capacity: 16
'   Keys and Values:
'     -KEY-     -VALUE-
'     First:    Hello
'     Second:   World
'     Third:    !

注釈

SortedList要素には、任意のIDictionary実装内の要素のように、そのキー、または任意のIList実装内の要素などのインデックスによってアクセスできます。

Important

新しい開発には SortedList クラスを使用しないことをお勧めします。 代わりに、ジェネリック System.Collections.Generic.SortedList<TKey,TValue> クラスを使用することをお勧めします。 詳細については、「 非ジェネリック コレクションは GitHub で使用しないでください」を参照してください。

SortedList オブジェクトは、リストの要素を格納する 2 つの配列を内部的に保持します。つまり、キーの配列と、関連付けられている値の配列を格納します。 各要素は、 DictionaryEntry オブジェクトとしてアクセスできるキーと値のペアです。 キーを nullすることはできませんが、値を指定することもできます。

SortedList オブジェクトの容量は、SortedListが保持できる要素の数です。 要素が SortedListに追加されると、再割り当てによって必要に応じて容量が自動的に増加します。 容量を減らすには、 TrimToSize を呼び出すか、 Capacity プロパティを明示的に設定します。

.NET Framework のみ:非常に大きなSortedList オブジェクトの場合は、<gcAllowVeryLargeObjects>構成要素のenabled属性を実行時環境でtrueに設定することで、64 ビット システムで最大容量を 20 億要素に増やすことができます。

SortedList オブジェクトの要素は、SortedListの作成時に指定された特定のIComparer実装に従うか、キー自体によって提供されるIComparable実装に従って、キーによって並べ替えられます。 どちらの場合も、 SortedList では重複するキーは許可されません。

インデックス シーケンスは、並べ替え順序に基づいています。 要素が追加されると、正しい並べ替え順序で SortedList に挿入され、それに応じてインデックスが調整されます。 要素が削除されると、インデックス作成もそれに応じて調整されます。 そのため、要素が SortedList オブジェクトに追加または削除されると、特定のキーと値のペアのインデックスが変更される可能性があります。

SortedList オブジェクトに対する操作は、並べ替えのために、Hashtable オブジェクトに対する操作よりも遅くなる傾向があります。 ただし、 SortedList は、関連付けられたキーまたはインデックスを介して値にアクセスできるようにすることで、柔軟性を高めます。

このコレクション内の要素には、整数インデックスを使用してアクセスできます。 このコレクション内のインデックスは 0 から始まります。

C# 言語の foreach ステートメント (Visual Basic でfor each ) は、コレクション内の要素の型のオブジェクトを返します。 SortedList オブジェクトの各要素はキーと値のペアであるため、要素の型はキーの型または値の型ではありません。 代わりに、要素の型は DictionaryEntry。 例えば次が挙げられます。

foreach (DictionaryEntry de in mySortedList)
{
    //...
}
For Each de As DictionaryEntry In mySortedList
    '...
Next de

foreach ステートメントは列挙子のラッパーであり、コレクションからの読み取りのみが許可され、コレクションへの書き込みは許可されません。

コンストラクター

名前 説明
SortedList()

空のSortedList クラスの新しいインスタンスを初期化し、既定の初期容量を持ち、SortedList オブジェクトに追加された各キーによって実装されるIComparable インターフェイスに従って並べ替えられます。

SortedList(IComparer, Int32)

空の SortedList クラスの新しいインスタンスを初期化し、指定した初期容量を持ち、指定した IComparer インターフェイスに従って並べ替えられます。

SortedList(IComparer)

空で、既定の初期容量を持ち、指定したIComparer インターフェイスに従って並べ替えられる、SortedList クラスの新しいインスタンスを初期化します。

SortedList(IDictionary, IComparer)

指定したディクショナリからコピーされた要素を含み、コピーされた要素の数と同じ初期容量を持ち、指定したIComparer インターフェイスに従って並べ替えられる、SortedList クラスの新しいインスタンスを初期化します。

SortedList(IDictionary)

指定したディクショナリからコピーされた要素を含み、コピーされた要素の数と同じ初期容量を持ち、各キーによって実装されるIComparable インターフェイスに従って並べ替えられる、SortedList クラスの新しいインスタンスを初期化します。

SortedList(Int32)

空のSortedList クラスの新しいインスタンスを初期化し、指定された初期容量を持ち、SortedList オブジェクトに追加された各キーによって実装されるIComparable インターフェイスに従って並べ替えられます。

プロパティ

名前 説明
Capacity

SortedList オブジェクトの容量を取得または設定します。

Count

SortedList オブジェクトに含まれる要素の数を取得します。

IsFixedSize

SortedList オブジェクトのサイズが固定されているかどうかを示す値を取得します。

IsReadOnly

SortedList オブジェクトが読み取り専用かどうかを示す値を取得します。

IsSynchronized

SortedList オブジェクトへのアクセスが同期されているかどうかを示す値を取得します (スレッド セーフ)。

Item[Object]

SortedList オブジェクト内の特定のキーに関連付けられた値を取得または設定します。

Keys

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

SyncRoot

SortedList オブジェクトへのアクセスを同期するために使用できるオブジェクトを取得します。

Values

SortedList オブジェクト内の値を取得します。

メソッド

名前 説明
Add(Object, Object)

指定したキーと値を持つ要素を SortedList オブジェクトに追加します。

Clear()

SortedList オブジェクトからすべての要素を削除します。

Clone()

SortedList オブジェクトの簡易コピーを作成します。

Contains(Object)

SortedList オブジェクトに特定のキーが含まれているかどうかを判断します。

ContainsKey(Object)

SortedList オブジェクトに特定のキーが含まれているかどうかを判断します。

ContainsValue(Object)

SortedList オブジェクトに特定の値が含まれているかどうかを判断します。

CopyTo(Array, Int32)

要素 SortedList 配列内の指定したインデックスから始まる 1 次元 Array オブジェクトにコピーします。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetByIndex(Int32)

SortedList オブジェクトの指定したインデックス位置にある値を取得します。

GetEnumerator()

SortedList オブジェクトを反復処理するIDictionaryEnumerator オブジェクトを返します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetKey(Int32)

SortedList オブジェクトの指定したインデックス位置にあるキーを取得します。

GetKeyList()

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

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValueList()

SortedList オブジェクト内の値を取得します。

IndexOfKey(Object)

SortedList オブジェクト内の指定したキーの 0 から始まるインデックスを返します。

IndexOfValue(Object)

SortedList オブジェクトで指定した値が最初に出現した位置の 0 から始まるインデックスを返します。

MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
Remove(Object)

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

RemoveAt(Int32)

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

SetByIndex(Int32, Object)

SortedList オブジェクト内の特定のインデックス位置にある値を置き換えます。

Synchronized(SortedList)

SortedList オブジェクトの同期 (スレッド セーフ) ラッパーを返します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)
TrimToSize()

容量を、 SortedList オブジェクト内の要素の実際の数に設定します。

明示的なインターフェイスの実装

名前 説明
IEnumerable.GetEnumerator()

SortedListを反復処理するIEnumeratorを返します。

拡張メソッド

名前 説明
AsParallel(IEnumerable)

クエリの並列化を有効にします。

AsQueryable(IEnumerable)

IEnumerableIQueryableに変換します。

Cast<TResult>(IEnumerable)

IEnumerable の要素を指定した型にキャストします。

OfType<TResult>(IEnumerable)

指定した型に基づいて、IEnumerable の要素をフィルター処理します。

適用対象

スレッド セーフ

この型のパブリック静的 (Visual Basic のShared ) メンバーはスレッド セーフです。 インスタンス メンバーがスレッド セーフであるとは限りません。

SortedList オブジェクトは、コレクションが変更されない限り、複数のリーダーを同時にサポートできます。 SortedListのスレッド セーフを保証するには、Synchronized(SortedList) メソッドによって返されるラッパーを通じてすべての操作を実行する必要があります。

コレクションを列挙することは、本質的にスレッド セーフなプロシージャではありません。 コレクションが同期されている場合でも、他のスレッドはコレクションを変更できるため、列挙子は例外をスローします。 列挙中のスレッド セーフを保証するには、列挙全体の間にコレクションをロックするか、他のスレッドによって行われた変更によって発生する例外をキャッチします。

こちらもご覧ください