Sdílet prostřednictvím


SortedList Třída

Definice

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.

Viz také