SortedList Třída

Definice

Představuje kolekci párů klíč/hodnota, které jsou seřazené podle klíčů a jsou přístupné podle klíče a 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
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SortedList = class
    interface IDictionary
    interface ICloneable
    interface ICollection
    interface IEnumerable
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.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 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 je možné přistupovat pomocí jeho klíče, jako je prvek v jakékoli IDictionary implementaci, nebo pomocí jeho indexu, 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 GitHub.

SortedList Objekt 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. Vzhledem k tomu, že 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 Capacity nebo nastavením vlastnosti explicitně.

pouze .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 elementu <gcAllowVeryLargeObjects> konfigurace do true prostředí za běhu.

Prvky objektu SortedList jsou seřazeny klíči 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.

Posloupnost indexů je založená 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 s objektem Hashtable . Nabízí SortedList ale větší flexibilitu tím, že umožňuje přístup k hodnotám buď prostřednictvím přidružených klíčů, nebo prostřednictvím indexů.

K prvků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 eachv 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í typ klíče nebo typ hodnoty. Spíše typ prvku je DictionaryEntry. Například:

for each (DictionaryEntry de in mySortedList)
{
    //...
}
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 čtení pouze z kolekce, nikoli zápis do.

Konstruktory

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)

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(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(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(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(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

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 má objekt pevnou velikost.

IsReadOnly

Získá hodnotu označující, zda SortedList je objekt 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

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čí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetByIndex(Int32)

Získá hodnotu na zadaném indexu objektu SortedList .

GetEnumerator()

IDictionaryEnumerator Vrátí objekt, který iteruje 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()

Type Získá aktuální instanci.

(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ří použádnou kopii aktuálního souboru 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 (thread-safe) objektu SortedList .

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í

IEnumerable.GetEnumerator()

IEnumerator Vrátí iteruje přes SortedList.

Metody rozšíření

Cast<TResult>(IEnumerable)

Přetypuje prvky zadaného IEnumerable typu.

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable založené na zadaném typu.

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede na IEnumerable IQueryable.

Platí pro

Bezpečný přístup z více vláken

Veřejné statické členy tohoto typu (Sharedv Visual Basic) jsou bezpečné pro vlákno. U členů instancí 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 závitu SortedList, musí být všechny operace provedeny prostřednictvím obálky vrácené metodou Synchronized(SortedList) .

Výčet prostřednictvím kolekce nemůže být procedurou bezpečnou pro přístup z více vláken. I v případě, že jde o synchronizovanou kolekci, mohou úpravy provádět i ostatní vlákna, což způsobuje vyvolání výjimky enumerátorem. K zaručení bezpečnosti přístupu z více vláken můžete buďto zamknout kolekci na celou dobu práce s výčtem, nebo zachycovat výjimky vzniklé v důsledku změn prováděných ostatními vlákny.

Viz také