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
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
    interface IDictionary
    interface ICloneable
    interface ICollection
    interface IEnumerable
Public Class SortedList
Implements IDictionary
Public Class SortedList
Implements ICloneable, IDictionary
Наследование
SortedList
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как создать и инициализировать SortedList объект и как распечатать его ключи и значения.

#using <system.dll>

using namespace System;
using namespace System::Collections;
public ref class SamplesSortedList
{
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();
   }

};

int main()
{

   // Creates and initializes a new SortedList.
   SortedList^ mySL = gcnew 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:" );
   SamplesSortedList::PrintKeysAndValues( mySL );
}

/*
This code produces the following output.

mySL
Count:    3
Capacity: 16
Keys and Values:
-KEY-    -VALUE-
First:    Hello
Second:    World
Third:    !
*/
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 реализации.

Важно!

Мы не рекомендуем использовать SortedList класс для новой разработки. Вместо этого рекомендуется использовать универсальный System.Collections.Generic.SortedList<TKey,TValue> класс. Дополнительные сведения см. в статье, не относящийся к универсальным коллекциям, не следует использовать в GitHub.

Объект SortedList внутренне поддерживает два массива для хранения элементов списка, то есть один массив для ключей и другой массив для связанных значений. Каждый элемент — это пара "ключ-значение", доступ к которому можно получить в виде DictionaryEntry объекта. Ключ не может быть null, но значение может быть.

Емкость SortedList объекта — это количество элементов, которые могут содержаться SortedList . По мере добавления элементов в SortedListобъект емкость автоматически увеличивается при необходимости при перемещении. Емкость можно уменьшить путем вызова TrimToSize или явного Capacity задания свойства.

только платформа .NET Framework. Для очень больших SortedList объектов можно увеличить максимальную емкость до 2 миллиардов элементов в 64-разрядной системе, задав enabled атрибут <gcAllowVeryLargeObjects> элемента true конфигурации в среде выполнения.

Элементы SortedList объекта сортируются по ключам в соответствии с конкретной IComparer реализацией, указанной при SortedList создании или в соответствии с IComparable реализацией, предоставленной самими ключами. В любом случае не SortedList допускается дублирование ключей.

Последовательность индексов основана на последовательности сортировки. При добавлении элемента он вставляется SortedList в правильном порядке сортировки, а индексирование корректируется соответствующим образом. При удалении элемента индексирование также корректируется соответствующим образом. Таким образом, индекс определенной пары "ключ-значение" может измениться при добавлении или удалении SortedList элементов из объекта.

Операции с SortedList объектом обычно выполняются медленнее операций Hashtable с объектом из-за сортировки. Тем не менее, обеспечивает большую гибкость, SortedList позволяя получить доступ к значениям через связанные ключи или через индексы.

Доступ к элементам в этой коллекции можно получить с помощью целочисленного индекса. Индексы в этой коллекции основаны на нулях.

Оператор foreach языка C# (for eachв Visual Basic) возвращает объект типа элементов в коллекции. Так как каждый элемент SortedList объекта является парой "ключ-значение", тип элемента не является типом ключа или типом значения. Скорее, тип элемента — DictionaryEntry. Пример:

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

Оператор foreach представляет собой оболочку вокруг перечислителя, которая позволяет выполнять только чтение из коллекции, а не запись в нее.

Конструкторы

SortedList()

Инициализирует новый пустой экземпляр класса SortedList с начальной емкостью по умолчанию, упорядоченный в соответствии с интерфейсом IComparable, который реализован каждым ключом, добавленным в объект SortedList.

SortedList(IComparer)

Инициализирует новый пустой экземпляр класса SortedList с начальной емкостью по умолчанию, упорядоченный в соответствии с указанным интерфейсом IComparer.

SortedList(IComparer, Int32)

Инициализирует новый пустой экземпляр класса SortedList с указанной начальной емкостью, упорядоченный в соответствии с указанным интерфейсом IComparer.

SortedList(IDictionary)

Инициализирует новый экземпляр SortedList, содержащий элементы, скопированные из указанного словаря, обладающий начальной емкостью, равной количеству скопированных элементов и упорядоченный в соответствии с реализацией интерфейса IComparable каждого ключа.

SortedList(IDictionary, IComparer)

Инициализирует новый экземпляр SortedList, содержащий элементы, скопированные из указанного словаря, обладающий начальной емкостью, равной количеству скопированных элементов и упорядоченный в соответствии с указанным интерфейсом IComparer.

SortedList(Int32)

Инициализирует новый пустой экземпляр класса SortedList с указанной начальной емкостью, упорядоченный в соответствии с интерфейсом IComparable, который реализован каждым ключом, добавленным в объект SortedList.

Свойства

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 в одномерный объект Array начиная с указанного значения индекса массива.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetByIndex(Int32)

Получает значение с указанным индексом из объекта SortedList.

GetEnumerator()

Возвращает объект IDictionaryEnumerator, осуществляющий перебор элементов объекта SortedList.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetKey(Int32)

Получает ключ с указанным индексом из объекта SortedList.

GetKeyList()

Получает ключи из объекта SortedList.

GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
GetValueList()

Получает значения из объекта SortedList.

IndexOfKey(Object)

Возвращает индекс (с нуля) указанного ключа в объекте SortedList.

IndexOfValue(Object)

Индекс (с нуля) первого вхождения указанного значения в объекте SortedList.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Remove(Object)

Удаляет элемент с указанным ключом из объекта SortedList.

RemoveAt(Int32)

Удаляет элемент с указанным индексом из объекта SortedList.

SetByIndex(Int32, Object)

Заменяет значение по указанному индексу в объекте SortedList.

Synchronized(SortedList)

Возвращает синхронизированную (потокобезопасную) оболочку объекта SortedList.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TrimToSize()

Задает значение емкости, равное действительному количеству элементов в объекте SortedList.

Явные реализации интерфейса

IEnumerable.GetEnumerator()

Возвращает объект IEnumerator, осуществляющий перебор SortedList.

Методы расширения

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к

Потокобезопасность

Открытые статические (Shared в Visual Basic) члены этого типа являются потокобезопасными. Потокобезопасная работа с членами экземпляров типа не гарантируется.

Объект SortedList может одновременно поддерживать несколько модулей чтения, если коллекция не изменяется. Чтобы гарантировать безопасность SortedListпотока, все операции должны выполняться с помощью оболочки, возвращаемой Synchronized(SortedList) методом.

Перечисление коллекции не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки могут ее изменить, что приведет к тому, что перечислитель создаст исключение. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.

См. также раздел