SortedList SortedList SortedList SortedList Class

Определение

Предоставляет коллекцию пар "ключ-значение", упорядоченных по ключам. Доступ к парам можно получить по ключу и по индексу.Represents a collection of key/value pairs that are sorted by the keys and are accessible by key and by index.

public ref class SortedList : ICloneable, System::Collections::IDictionary
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class SortedList : ICloneable, System.Collections.IDictionary
type SortedList = class
    interface IDictionary
    interface ICloneable
    interface ICollection
    interface IEnumerable
Public Class SortedList
Implements ICloneable, IDictionary
Наследование
SortedListSortedListSortedListSortedList
Атрибуты
Реализации

Примеры

В следующем примере кода показано, как создать и инициализировать SortedList объект и как вывести его ключи и значения.The following code example shows how to create and initialize a SortedList object and how to print out its keys and values.

#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 SamplesSortedList  {

   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
Imports System.Collections
Imports Microsoft.VisualBasic

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:    !
 

Комментарии

Доступ к IDictionary IList элементу может осуществляться по его ключу, например элементу в любой реализации или по индексу, например элементу в любой реализации. SortedListA SortedList element can be accessed by its key, like an element in any IDictionary implementation, or by its index, like an element in any IList implementation.

Важно!

Мы не рекомендуем использовать SortedList класс для новой разработки.We don't recommend that you use the SortedList class for new development. Вместо этого рекомендуется использовать универсальный System.Collections.Generic.SortedList<TKey,TValue> класс.Instead, we recommend that you use the generic System.Collections.Generic.SortedList<TKey,TValue> class. Дополнительные сведения см. в разделе неуниверсальные коллекции не следует использовать в GitHub.For more information, see Non-generic collections shouldn't be used on GitHub.

SortedList Объект внутренне поддерживает два массива для хранения элементов списка, то есть один массив для ключей и другой массив для связанных значений.A SortedList object internally maintains two arrays to store the elements of the list; that is, one array for the keys and another array for the associated values. Каждый элемент представляет собой пару "ключ-значение", доступ к которой DictionaryEntry можно получить как к объекту.Each element is a key/value pair that can be accessed as a DictionaryEntry object. Ключ не может быть null, а значение может быть.A key cannot be null, but a value can be.

Емкость SortedList объекта — это количество элементов, SortedList которые может содержать.The capacity of a SortedList object is the number of elements the SortedList can hold. Когда элементы добавляются в SortedList, емкость автоматически увеличивается по мере необходимости путем перераспределения.As elements are added to a SortedList, the capacity is automatically increased as required through reallocation. Емкость можно уменьшить, вызвав TrimToSize или явно Capacity задав свойство.The capacity can be decreased by calling TrimToSize or by setting the Capacity property explicitly.

Только .NET Framework: Для очень больших SortedList объектов можно увеличить максимальную емкость до 2 000 000 000 элементов в 64-разрядной системе, enabled задав атрибут <gcAllowVeryLargeObjects> элемента true конфигурации в среде выполнения..NET Framework only: For very large SortedList objects, you can increase the maximum capacity to 2 billion elements on a 64-bit system by setting the enabled attribute of the <gcAllowVeryLargeObjects> configuration element to true in the run-time environment.

Элементы SortedList объекта сортируются по ключам в соответствии с конкретной IComparer реализацией, SortedList заданной при создании или в соответствии IComparable с реализацией, предоставляемой самими ключами.The elements of a SortedList object are sorted by the keys either according to a specific IComparer implementation specified when the SortedList is created or according to the IComparable implementation provided by the keys themselves. В любом случае, a SortedList не допускает дублирования ключей.In either case, a SortedList does not allow duplicate keys.

Последовательность индексов основана на последовательности сортировки.The index sequence is based on the sort sequence. При добавлении элемента он вставляется SortedList в правильный порядок сортировки, а индексирование корректируется соответствующим образом.When an element is added, it is inserted into SortedList in the correct sort order, and the indexing adjusts accordingly. При удалении элемента индексирование также корректируется соответствующим образом.When an element is removed, the indexing also adjusts accordingly. Таким образом, индекс определенной пары «ключ-значение» может измениться по мере добавления или удаления элементов из SortedList объекта.Therefore, the index of a specific key/value pair might change as elements are added or removed from the SortedList object.

Операции с SortedList объектом, как правило, выполняются медленнее, чем Hashtable операции с объектом из-за сортировки.Operations on a SortedList object tend to be slower than operations on a Hashtable object because of the sorting. SortedList Однако обеспечивает большую гибкость, предоставляя доступ к значениям через связанные ключи или через индексы.However, the SortedList offers more flexibility by allowing access to the values either through the associated keys or through the indexes.

Доступ к элементам в этой коллекции можно получить с помощью целочисленного индекса.Elements in this collection can be accessed using an integer index. Индексы в этой коллекции отсчитываются от нуля.Indexes in this collection are zero-based.

Оператор языка(for each в Visual Basic) возвращает объект типа элементов в коллекции. C# foreachThe foreach statement of the C# language (for each in Visual Basic) returns an object of the type of the elements in the collection. Поскольку каждый элемент SortedList объекта является парой "ключ-значение", тип элемента не является типом ключа или типом значения.Since each element of the SortedList object is a key/value pair, the element type is not the type of the key or the type of the value. Вместо этого тип элемента — DictionaryEntry.Rather, the element type is DictionaryEntry. Например:For example:

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

foreach Оператор является оболочкой для перечислителя, который позволяет только считывать из коллекции, а не записывать в нее.The foreach statement is a wrapper around the enumerator, which allows only reading from, not writing to, the collection.

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

SortedList() SortedList() SortedList() SortedList()

Инициализирует новый пустой экземпляр класса SortedList с начальной емкостью по умолчанию, упорядоченный в соответствии с интерфейсом IComparable, который реализован каждым ключом, добавленным в объект SortedList.Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted according to the IComparable interface implemented by each key added to the SortedList object.

SortedList(IComparer) SortedList(IComparer) SortedList(IComparer) SortedList(IComparer)

Инициализирует новый пустой экземпляр класса SortedList с начальной емкостью по умолчанию, упорядоченный в соответствии с указанным интерфейсом IComparer.Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted according to the specified IComparer interface.

SortedList(IComparer, Int32) SortedList(IComparer, Int32) SortedList(IComparer, Int32) SortedList(IComparer, Int32)

Инициализирует новый пустой экземпляр класса SortedList с указанной начальной емкостью, упорядоченный в соответствии с указанным интерфейсом IComparer.Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted according to the specified IComparer interface.

SortedList(IDictionary) SortedList(IDictionary) SortedList(IDictionary) SortedList(IDictionary)

Инициализирует новый экземпляр SortedList, содержащий элементы, скопированные из указанного словаря, обладающий начальной емкостью, равной количеству скопированных элементов и упорядоченный в соответствии с реализацией интерфейса IComparable каждого ключа.Initializes a new instance of the SortedList class that contains elements copied from the specified dictionary, has the same initial capacity as the number of elements copied, and is sorted according to the IComparable interface implemented by each key.

SortedList(IDictionary, IComparer) SortedList(IDictionary, IComparer) SortedList(IDictionary, IComparer) SortedList(IDictionary, IComparer)

Инициализирует новый экземпляр SortedList, содержащий элементы, скопированные из указанного словаря, обладающий начальной емкостью, равной количеству скопированных элементов и упорядоченный в соответствии с указанным интерфейсом IComparer.Initializes a new instance of the SortedList class that contains elements copied from the specified dictionary, has the same initial capacity as the number of elements copied, and is sorted according to the specified IComparer interface.

SortedList(Int32) SortedList(Int32) SortedList(Int32) SortedList(Int32)

Инициализирует новый пустой экземпляр класса SortedList с указанной начальной емкостью, упорядоченный в соответствии с интерфейсом IComparable, который реализован каждым ключом, добавленным в объект SortedList.Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted according to the IComparable interface implemented by each key added to the SortedList object.

Свойства

Capacity Capacity Capacity Capacity

Возвращает или задает емкость объекта SortedList.Gets or sets the capacity of a SortedList object.

Count Count Count Count

Получает количество элементов, содержащихся в объекте SortedList.Gets the number of elements contained in a SortedList object.

IsFixedSize IsFixedSize IsFixedSize IsFixedSize

Получает значение, показывающее, имеет ли объект SortedList фиксированный размер.Gets a value indicating whether a SortedList object has a fixed size.

IsReadOnly IsReadOnly IsReadOnly IsReadOnly

Возвращает значение, указывающее, является ли объект SortedList доступным только для чтения.Gets a value indicating whether a SortedList object is read-only.

IsSynchronized IsSynchronized IsSynchronized IsSynchronized

Возвращает значение, указывающее на то, является ли доступ к объекту SortedList синхронизированным (потокобезопасным).Gets a value indicating whether access to a SortedList object is synchronized (thread safe).

Item[Object] Item[Object] Item[Object] Item[Object]

Получает или задает значение, связанное с указанным ключом в объекте SortedList.Gets or sets the value associated with a specific key in a SortedList object.

Keys Keys Keys Keys

Получает ключи из объекта SortedList.Gets the keys in a SortedList object.

SyncRoot SyncRoot SyncRoot SyncRoot

Получает объект, который позволяет синхронизировать доступ к объекту SortedList.Gets an object that can be used to synchronize access to a SortedList object.

Values Values Values Values

Получает значения из объекта SortedList.Gets the values in a SortedList object.

Методы

Add(Object, Object) Add(Object, Object) Add(Object, Object) Add(Object, Object)

Добавляет элемент с указанными ключом и значением в объект SortedList.Adds an element with the specified key and value to a SortedList object.

Clear() Clear() Clear() Clear()

Удаляет все элементы из объекта SortedList.Removes all elements from a SortedList object.

Clone() Clone() Clone() Clone()

Создает неполную копию объекта SortedList.Creates a shallow copy of a SortedList object.

Contains(Object) Contains(Object) Contains(Object) Contains(Object)

Определяет, содержит ли объект SortedList указанный ключ.Determines whether a SortedList object contains a specific key.

ContainsKey(Object) ContainsKey(Object) ContainsKey(Object) ContainsKey(Object)

Определяет, содержит ли объект SortedList указанный ключ.Determines whether a SortedList object contains a specific key.

ContainsValue(Object) ContainsValue(Object) ContainsValue(Object) ContainsValue(Object)

Определяет, содержит ли объект SortedList указанное значение.Determines whether a SortedList object contains a specific value.

CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32) CopyTo(Array, Int32)

Копирует элементы объекта SortedList в одномерный объект Array начиная с указанного значения индекса массива.Copies SortedList elements to a one-dimensional Array object, starting at the specified index in the array.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetByIndex(Int32) GetByIndex(Int32) GetByIndex(Int32) GetByIndex(Int32)

Получает значение с указанным индексом из объекта SortedList.Gets the value at the specified index of a SortedList object.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает объект IDictionaryEnumerator, осуществляющий перебор элементов объекта SortedList.Returns an IDictionaryEnumerator object that iterates through a SortedList object.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetKey(Int32) GetKey(Int32) GetKey(Int32) GetKey(Int32)

Получает ключ с указанным индексом из объекта SortedList.Gets the key at the specified index of a SortedList object.

GetKeyList() GetKeyList() GetKeyList() GetKeyList()

Получает ключи из объекта SortedList.Gets the keys in a SortedList object.

GetType() GetType() GetType() GetType()

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

(Inherited from Object)
GetValueList() GetValueList() GetValueList() GetValueList()

Получает значения из объекта SortedList.Gets the values in a SortedList object.

IndexOfKey(Object) IndexOfKey(Object) IndexOfKey(Object) IndexOfKey(Object)

Возвращает индекс (с нуля) указанного ключа в объекте SortedList.Returns the zero-based index of the specified key in a SortedList object.

IndexOfValue(Object) IndexOfValue(Object) IndexOfValue(Object) IndexOfValue(Object)

Индекс (с нуля) первого вхождения указанного значения в объекте SortedList.Returns the zero-based index of the first occurrence of the specified value in a SortedList object.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
Remove(Object) Remove(Object) Remove(Object) Remove(Object)

Удаляет элемент с указанным ключом из объекта SortedList.Removes the element with the specified key from a SortedList object.

RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32) RemoveAt(Int32)

Удаляет элемент с указанным индексом из объекта SortedList.Removes the element at the specified index of a SortedList object.

SetByIndex(Int32, Object) SetByIndex(Int32, Object) SetByIndex(Int32, Object) SetByIndex(Int32, Object)

Заменяет значение по указанному индексу в объекте SortedList.Replaces the value at a specific index in a SortedList object.

Synchronized(SortedList) Synchronized(SortedList) Synchronized(SortedList) Synchronized(SortedList)

Возвращает синхронизированную (потокобезопасную) оболочку объекта SortedList.Returns a synchronized (thread-safe) wrapper for a SortedList object.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)
TrimToSize() TrimToSize() TrimToSize() TrimToSize()

Задает значение емкости, равное действительному количеству элементов в объекте SortedList.Sets the capacity to the actual number of elements in a SortedList object.

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

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

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

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

Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable) Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable) OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable) AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable) AsQueryable(IEnumerable)

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

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

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

Открытые статические (Shared в Visual Basic) члены этого типа являются потокобезопасными.Public static (Shared in Visual Basic) members of this type are thread safe. Потокобезопасность членов экземпляров не гарантируется.Any instance members are not guaranteed to be thread safe.

SortedList Объект может поддерживать несколько модулей чтения параллельно, пока коллекция не изменяется.A SortedList object can support multiple readers concurrently, as long as the collection is not modified. Чтобы обеспечить потокобезопасность SortedList, все операции должны выполняться через оболочку, возвращенную Synchronized(SortedList) методом.To guarantee the thread safety of the SortedList, all operations must be done through the wrapper returned by the Synchronized(SortedList) method.

Перечисление коллекции не является потокобезопасной процедурой.Enumerating through a collection is intrinsically not a thread-safe procedure. Даже если коллекция синхронизирована, другие потоки могут ее изменить, что приведет к тому, что перечислитель создаст исключение.Even when a collection is synchronized, other threads can still modify the collection, which causes the enumerator to throw an exception. Для обеспечения потокобезопасности при перечислении можно либо заблокировать коллекцию на все время перечисления, либо перехватывать исключения, возникающие в результате изменений, внесенных другими потоками.To guarantee thread safety during enumeration, you can either lock the collection during the entire enumeration or catch the exceptions resulting from changes made by other threads.

Дополнительно