SortedList Class
Represents a collection of key/value pairs that are individually sorted on the keys and that are accessible by both the key and the index.
Namespace:
System.Collections
Assembly:
mscorlib.dll
Syntax
public class SortedList : IDictionary, ICollection, IEnumerable, ICloneable
Remarks
The SortedList class represents a collection of key/value pairs that are kept sorted by keys. The keys are unique and cannot be null. The values can be null.
The SortedList is implemented using two arrays, one for the keys and one for the values. The keys are sorted, so searching for a key is efficient. However, adding or removing elements can be slow because it may require shifting all the elements in the arrays.
If you need a collection that is sorted by keys but allows duplicate keys, consider using SortedDictionary<TKey, TValue> (available in .NET Framework 4 and later). If you need a collection that is sorted by values, you will need to implement your own custom sorting logic.
Constructors
| Name | Description |
|---|---|
SortedList() |
Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted using a case-sensitive comparison. |
SortedList(int capacity) |
Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted using a case-sensitive comparison. |
SortedList(IComparer comparer) |
Initializes a new instance of the SortedList class that is empty, has the default initial capacity, and is sorted using the specified IComparer. |
SortedList(IComparer comparer, int capacity) |
Initializes a new instance of the SortedList class that is empty, has the specified initial capacity, and is sorted using the specified IComparer. |
Properties
| Name | Description |
|---|---|
Count |
Gets the number of key/value pairs contained in the SortedList. |
Keys |
Gets an ICollection containing the keys in the SortedList. |
Values |
Gets an ICollection containing the values in the SortedList. |
IsFixedSize |
Gets a value indicating whether the SortedList has a fixed size. |
IsReadOnly |
Gets a value indicating whether the SortedList is read-only. |
Capacity |
Gets or sets the initial capacity of the SortedList. |
Methods
| Name | Description |
|---|---|
Add(object key, object value) |
Adds an element with the specified key and value to the SortedList. |
Clear() |
Removes all elements from the SortedList. |
Clone() |
Creates a shallow copy of the SortedList. |
Contains(object key) |
Determines whether the SortedList contains the specified key. |
ContainsKey(object key) |
Determines whether the SortedList contains the specified key. |
ContainsValue(object value) |
Determines whether the SortedList contains the specified value. |
GetByIndex(int index) |
Gets the value at the specified index. |
GetKey(int index) |
Gets the key at the specified index. |
IndexOfKey(object key) |
Gets the zero-based index of the specified key in the SortedList. |
IndexOfValue(object value) |
Gets the zero-based index of the first occurrence of the specified value in the SortedList. |
Remove(object key) |
Removes the element with the specified key from the SortedList. |
RemoveAt(int index) |
Removes the element at the specified index from the SortedList. |
SetByIndex(int index, object value) |
Sets the value at the specified index. |
Example
The following example demonstrates how to use the SortedList class to store and retrieve key/value pairs.
using System;
using System.Collections;
public class SortedListExample
{
public static void Main(string[] args)
{
// Create a SortedList
SortedList sortedList = new SortedList();
// Add elements to the SortedList
sortedList.Add("Apple", 1);
sortedList.Add("Banana", 2);
sortedList.Add("Cherry", 3);
sortedList.Add("Date", 4);
Console.WriteLine("Initial SortedList:");
PrintSortedList(sortedList);
// Access elements by key
Console.WriteLine($"Value for 'Banana': {sortedList["Banana"]}");
// Access elements by index
Console.WriteLine($"Key at index 1: {sortedList.GetKey(1)}, Value at index 1: {sortedList.GetByIndex(1)}");
// Check if a key exists
Console.WriteLine($"Contains key 'Cherry': {sortedList.ContainsKey("Cherry")}");
// Remove an element by key
sortedList.Remove("Banana");
Console.WriteLine("\nSortedList after removing 'Banana':");
PrintSortedList(sortedList);
// Remove an element by index
sortedList.RemoveAt(0); // Removes 'Apple'
Console.WriteLine("\nSortedList after removing element at index 0:");
PrintSortedList(sortedList);
// Clear the SortedList
sortedList.Clear();
Console.WriteLine($"\nSortedList after clearing. Count: {sortedList.Count}");
}
public static void PrintSortedList(SortedList list)
{
foreach (DictionaryEntry entry in list)
{
Console.WriteLine($" Key: {entry.Key}, Value: {entry.Value}");
}
}
}