SortedList Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje kolekci párů klíč/hodnota seřazených podle klíčů a jsou přístupné podle klíče a podle indexu.
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
- Dědičnost
-
SortedList
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje, jak vytvořit a inicializovat SortedList objekt a jak vytisknout jeho klíče a hodnoty.
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: !
Poznámky
K SortedList elementu může přistupovat jeho klíč, například prvek v jakékoli IDictionary implementaci, nebo jeho index, jako je prvek v jakékoli IList implementaci.
Důležité
Nedoporučujeme používat SortedList třídu pro nový vývoj. Místo toho doporučujeme použít obecnou System.Collections.Generic.SortedList<TKey,TValue> třídu. Další informace najdete v tématu Ne generické kolekce, které by se neměly používat na GitHubu.
Objekt SortedList interně udržuje dvě pole pro uložení prvků seznamu; to znamená jedno pole pro klíče a další pole pro přidružené hodnoty. Každý prvek je pár klíč/hodnota, ke kterému lze přistupovat jako k objektu DictionaryEntry . Klíč nemůže být null, ale hodnota může být.
Kapacita objektu SortedList je počet prvků, které SortedList může obsahovat. S tím, jak jsou prvky přidány do SortedList, kapacita se automaticky zvýší podle potřeby prostřednictvím reallocation. Kapacitu lze snížit voláním TrimToSize nebo explicitním nastavením Capacity vlastnosti.
Pouze rozhraní .NET Framework: U velmi velkých SortedList objektů můžete zvýšit maximální kapacitu na 2 miliardy prvků v 64bitovém systému nastavením enabled atributu <gcAllowVeryLargeObjects> elementu konfigurace do true prostředí za běhu.
Prvky objektu SortedList jsou seřazeny podle klíčů buď podle konkrétní IComparer implementace zadané při SortedList vytvoření nebo podle IComparable implementace poskytované samotnými klíči. V obou případech SortedList nepovoluje duplicitní klíče.
Pořadí indexů je založeno na sekvenci řazení. Při přidání prvku se vloží do SortedList správného pořadí řazení a indexování se odpovídajícím způsobem upraví. Při odebrání elementu se indexování také odpovídajícím způsobem upraví. Index konkrétní dvojice klíč/hodnota se proto může změnit při přidání nebo odebrání prvků z objektu SortedList .
Operace s objektem SortedList jsou kvůli řazení pomalejší než operace Hashtable na objektu. Nabízí ale větší flexibilitu tím, SortedList že umožňuje přístup k hodnotám buď prostřednictvím přidružených klíčů, nebo prostřednictvím indexů.
K elementům v této kolekci lze přistupovat pomocí celočíselného indexu. Indexy v této kolekci jsou založené na nule.
Příkaz foreach jazyka C# (for each v jazyce Visual Basic) vrátí objekt typu prvků v kolekci. Vzhledem k tomu, že každý prvek objektu SortedList je pár klíč/hodnota, typ prvku není typem klíče nebo typu hodnoty. Spíše typ prvku je DictionaryEntry. Například:
foreach (DictionaryEntry de in mySortedList)
{
//...
}
For Each de As DictionaryEntry In mySortedList
'...
Next de
Příkaz foreach je obálka kolem enumerátoru, který umožňuje pouze čtení z kolekce, nikoli zápis do.
Konstruktory
| Name | Description |
|---|---|
| SortedList() |
Inicializuje novou instanci SortedList třídy, která je prázdná, má výchozí počáteční kapacitu a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči přidanými do objektu SortedList . |
| SortedList(IComparer, Int32) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má zadanou počáteční kapacitu a je seřazena podle zadaného IComparer rozhraní. |
| SortedList(IComparer) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má výchozí počáteční kapacitu a je seřazena podle zadaného IComparer rozhraní. |
| SortedList(IDictionary, IComparer) |
Inicializuje novou instanci SortedList třídy, která obsahuje prvky zkopírované ze zadaného slovníku, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a je seřazen podle zadaného IComparer rozhraní. |
| SortedList(IDictionary) |
Inicializuje novou instanci SortedList třídy, která obsahuje prvky zkopírované ze zadaného slovníku, má stejnou počáteční kapacitu jako počet zkopírovaných prvků a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči. |
| SortedList(Int32) |
Inicializuje novou instanci SortedList třídy, která je prázdná, má zadanou počáteční kapacitu a je seřazena podle IComparable rozhraní implementovaného jednotlivými klíči přidanými do objektu SortedList . |
Vlastnosti
| Name | Description |
|---|---|
| Capacity |
Získá nebo nastaví kapacitu objektu SortedList . |
| Count |
Získá počet prvků obsažených v objektu SortedList . |
| IsFixedSize |
Získá hodnotu určující, zda SortedList objekt má pevnou velikost. |
| IsReadOnly |
Získá hodnotu určující, zda SortedList objekt je jen pro čtení. |
| IsSynchronized |
Získá hodnotu označující, zda je přístup k objektu SortedList synchronizován (bezpečné vlákno). |
| Item[Object] |
Získá nebo nastaví hodnotu přidruženou ke konkrétnímu klíči v objektu SortedList . |
| Keys |
Získá klíče v objektu SortedList . |
| SyncRoot |
Získá objekt, který lze použít k synchronizaci přístupu k objektu SortedList . |
| Values |
Získá hodnoty v objektu SortedList . |
Metody
| Name | Description |
|---|---|
| Add(Object, Object) |
Přidá prvek se zadaným klíčem a hodnotou do objektu SortedList . |
| Clear() |
Odebere všechny prvky z objektu SortedList . |
| Clone() |
Vytvoří mělkou kopii objektu SortedList . |
| Contains(Object) |
Určuje, zda SortedList objekt obsahuje určitý klíč. |
| ContainsKey(Object) |
Určuje, zda SortedList objekt obsahuje určitý klíč. |
| ContainsValue(Object) |
Určuje, zda SortedList objekt obsahuje konkrétní hodnotu. |
| CopyTo(Array, Int32) |
Zkopíruje SortedList prvky do jednorozměrného Array objektu počínaje zadaným indexem v poli. |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| GetByIndex(Int32) |
Získá hodnotu v zadaném indexu objektu SortedList . |
| GetEnumerator() |
IDictionaryEnumerator Vrátí objekt, který prochází objektemSortedList. |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetKey(Int32) |
Získá klíč v zadaném indexu objektu SortedList . |
| GetKeyList() |
Získá klíče v objektu SortedList . |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetValueList() |
Získá hodnoty v objektu SortedList . |
| IndexOfKey(Object) |
Vrátí index založený na nule zadaného klíče v objektu SortedList . |
| IndexOfValue(Object) |
Vrátí index založený na nule prvního výskytu zadané hodnoty v objektu SortedList . |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| Remove(Object) |
Odebere prvek se zadaným klíčem z objektu SortedList . |
| RemoveAt(Int32) |
Odebere prvek v zadaném indexu objektu SortedList . |
| SetByIndex(Int32, Object) |
Nahradí hodnotu v určitém indexu v objektu SortedList . |
| Synchronized(SortedList) |
Vrátí synchronizovaný obálku (bezpečný pro vlákno SortedList ) pro objekt. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| TrimToSize() |
Nastaví kapacitu na skutečný počet prvků v objektu SortedList . |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IEnumerable.GetEnumerator() |
IEnumerator Vrátí iteruje přes SortedList. |
Metody rozšíření
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Umožňuje paralelizaci dotazu. |
| AsQueryable(IEnumerable) |
Převede IEnumerable na IQueryable. |
| Cast<TResult>(IEnumerable) |
Přetypuje prvky IEnumerable na zadaný typ. |
| OfType<TResult>(IEnumerable) |
Filtruje prvky IEnumerable na základě zadaného typu. |
Platí pro
Bezpečný přístup z více vláken
Veřejné statické členy tohoto typu (Shared v jazyce Visual Basic) jsou bezpečné pro přístup z více vláken. U žádného člena instance není zaručena bezpečnost pro přístup z více vláken.
Objekt SortedList může současně podporovat více čtenářů, pokud se kolekce nezmění. Chcete-li zaručit bezpečnost SortedListvlákna , všechny operace musí být provedeny prostřednictvím obálky vrácené metodou Synchronized(SortedList) .
Výčet prostřednictvím kolekce není vnitřně bezpečným postupem pro přístup z více vláken. I když je kolekce synchronizována, ostatní vlákna mohou stále upravovat kolekci, což způsobí, že enumerátor vyvolá výjimku. Chcete-li zaručit bezpečnost vláken během výčtu, můžete buď uzamknout kolekci během celého výčtu, nebo zachytit výjimky vyplývající z změn provedených jinými vlákny.