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 элементу можно получить доступ по ключу, например к элементу в любой реализации или по его индексу, например к элементу в любой IDictionaryIList реализации.
Это важно
Мы не рекомендуем использовать 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 Рассмотрим пример.
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
Оператор foreach представляет собой оболочку вокруг перечислителя, которая позволяет только считывать данные, а не записывать в коллекцию.
Конструкторы
| Имя | Описание |
|---|---|
| SortedList() |
Инициализирует новый экземпляр SortedList класса, который пуст, имеет начальную емкость по умолчанию и сортируется в соответствии IComparable с интерфейсом, реализованным каждым ключом, добавленным в SortedList объект. |
| SortedList(IComparer, Int32) |
Инициализирует новый экземпляр SortedList класса, который пуст, имеет указанную начальную емкость и сортируется в соответствии с указанным IComparer интерфейсом. |
| SortedList(IComparer) |
Инициализирует новый экземпляр SortedList класса, который является пустым, имеет начальную емкость по умолчанию и сортируется в соответствии с указанным IComparer интерфейсом. |
| SortedList(IDictionary, IComparer) |
Инициализирует новый экземпляр SortedList класса, который содержит элементы, скопированные из указанного словаря, имеет ту же начальную емкость, что и количество скопированных элементов и сортируется в соответствии с указанным IComparer интерфейсом. |
| SortedList(IDictionary) |
Инициализирует новый экземпляр SortedList класса, который содержит элементы, скопированные из указанного словаря, имеет ту же начальную емкость, что и количество скопированных элементов и сортируется в соответствии с IComparable интерфейсом, реализованным каждым ключом. |
| 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. |
Методы расширения
| Имя | Описание |
|---|---|
| AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
| AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
| Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
| OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |
Применяется к
Потокобезопасность
Общедоступные статические (Shared в Visual Basic) элементы этого типа являются потокобезопасны. Никакие члены экземпляра не гарантированы как потокобезопасные.
Объект SortedList может одновременно поддерживать несколько читателей, если коллекция не изменяется. Чтобы гарантировать безопасность SortedListпотока, все операции должны выполняться с помощью оболочки, возвращаемой методом Synchronized(SortedList) .
Перечисление через коллекцию по сути не является потокобезопасной процедурой. Даже если коллекция синхронизирована, другие потоки по-прежнему могут изменять коллекцию, что приводит к возникновению исключения перечислителем. Чтобы гарантировать безопасность потоков во время перечисления, можно заблокировать коллекцию во время всего перечисления или поймать исключения, полученные из изменений, внесенных другими потоками.