Teilen über


SortedList Klasse

Definition

Stellt eine Auflistung von Schlüssel-Wert-Paaren dar, die nach Schlüsseln sortiert sind und auf die sowohl über Schlüssel als auch über Indizes zugegriffen werden kann.

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
Vererbung
SortedList
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie ein SortedList Objekt erstellt und initialisiert wird und wie die Schlüssel und Werte ausgegeben werden.

#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:    !

Hinweise

Auf ein SortedList Element kann über seinen Schlüssel zugegriffen werden, z. B. ein Element in einer beliebigen IDictionary Implementierung, oder über seinen Index, wie ein Element in jeder IList Implementierung.

Wichtig

Es wird nicht empfohlen, die SortedList -Klasse für neue Entwicklungen zu verwenden. Stattdessen wird empfohlen, die generische System.Collections.Generic.SortedList<TKey,TValue> Klasse zu verwenden. Weitere Informationen finden Sie unter Nicht generische Sammlungen sollten nicht auf GitHub verwendet werden.

Ein SortedList -Objekt verwaltet intern zwei Arrays, um die Elemente der Liste zu speichern, d. h. ein Array für die Schlüssel und ein anderes Array für die zugeordneten Werte. Jedes Element ist ein Schlüssel-Wert-Paar, auf das als DictionaryEntry Objekt zugegriffen werden kann. Ein Schlüssel kann nicht sein null, aber ein Wert kann sein.

Die Kapazität eines SortedList Objekts ist die Anzahl der Elemente, die enthalten SortedList können. Wenn Elemente zu einem SortedListhinzugefügt werden, wird die Kapazität automatisch bei Bedarf durch Neuzuweisung erhöht. Die Kapazität kann durch Aufrufen TrimToSize oder explizites Festlegen der Capacity Eigenschaft verringert werden.

nur .NET Framework: Bei sehr großen SortedList Objekten können Sie die maximale Kapazität auf 2 Milliarden Elemente auf einem 64-Bit-System erhöhen, indem Sie das enabled Attribut des <gcAllowVeryLargeObjects> Konfigurationselements in der Laufzeitumgebung auf true festlegen.

Die Elemente eines SortedList Objekts werden nach den Schlüsseln entweder nach einer bestimmten IComparer Implementierung sortiert, die beim Erstellen von SortedList angegeben wird, oder nach der Implementierung, die IComparable von den Schlüsseln selbst bereitgestellt wird. In beiden Fällen lässt ein SortedList keine doppelten Schlüssel zu.

Die Indexsequenz basiert auf der Sortiersequenz. Wenn ein Element hinzugefügt wird, wird es in der richtigen Sortierreihenfolge eingefügt SortedList , und die Indizierung wird entsprechend angepasst. Wenn ein Element entfernt wird, wird auch die Indizierung entsprechend angepasst. Daher kann sich der Index eines bestimmten Schlüssel-Wert-Paares ändern, wenn Elemente hinzugefügt oder aus dem SortedList Objekt entfernt werden.

Vorgänge für ein SortedList Objekt sind aufgrund der Sortierung in der Regel langsamer als Vorgänge für ein Hashtable Objekt. Der bietet jedoch mehr Flexibilität, SortedList indem der Zugriff auf die Werte entweder über die zugeordneten Schlüssel oder über die Indizes ermöglicht wird.

Auf Elemente in dieser Auflistung kann mithilfe eines ganzzahligen Index zugegriffen werden. Indizes in dieser Auflistung sind nullbasiert.

Die foreach -Anweisung der C#-Sprache (for each in Visual Basic) gibt ein Objekt vom Typ der Elemente in der Auflistung zurück. Da jedes Element des SortedList Objekts ein Schlüssel-Wert-Paar ist, ist der Elementtyp nicht der Typ des Schlüssels oder der Typ des Werts. Der Elementtyp ist DictionaryEntryvielmehr . Beispiel:

for each (DictionaryEntry de in mySortedList)
{
    //...
}
foreach (DictionaryEntry de in mySortedList)
{
    //...
}
For Each de As DictionaryEntry In mySortedList
    '...
Next de

Die foreach -Anweisung ist ein Wrapper um den Enumerator, der nur das Lesen und nicht das Schreiben in die Auflistung zulässt.

Konstruktoren

SortedList()

Initialisiert eine neue, leere Instanz der SortedList-Klasse, die über die anfängliche Standardkapazität verfügt und entsprechend der IComparable-Schnittstelle sortiert wird, die von jedem zum SortedList-Objekt hinzugefügten Schlüssel implementiert wird.

SortedList(IComparer)

Initialisiert eine neue, leere Instanz der SortedList-Klasse, die über die anfängliche Standardkapazität verfügt und entsprechend der angegebenen IComparer-Schnittstelle sortiert wird.

SortedList(IComparer, Int32)

Initialisiert eine neue, leere Instanz der SortedList-Klasse, die über die angegebene anfängliche Kapazität verfügt und entsprechend der angegebenen IComparer-Schnittstelle sortiert wird.

SortedList(IDictionary)

Initialisiert eine neue Instanz der SortedList-Klasse mit Elementen, die aus dem angegebenen Wörterbuch kopiert werden. Die anfängliche Kapazität entspricht der Anzahl der kopierten Elemente, und die Sortierung erfolgt entsprechend der IComparable-Schnittstelle, die von den einzelnen Schlüsseln implementiert wird.

SortedList(IDictionary, IComparer)

Initialisiert eine neue Instanz der SortedList-Klasse, die aus dem angegebenen Wörterbuch kopierte Elemente enthält. Die anfängliche Kapazität entspricht der Anzahl der kopierten Elemente, und die Sortierung erfolgt nach der angegebenen IComparer-Schnittstelle.

SortedList(Int32)

Initialisiert eine neue, leere Instanz der SortedList-Klasse, die über die angegebene anfängliche Standardkapazität verfügt und entsprechend der IComparable-Schnittstelle sortiert wird, die von jedem zum SortedList-Objekt hinzugefügten Schlüssel implementiert wird.

Eigenschaften

Capacity

Ruft die Kapazität eines SortedList-Objekts ab oder legt diese fest.

Count

Ruft die Anzahl der Elemente ab, die in einem SortedList-Objekt enthalten sind.

IsFixedSize

Ruft einen Wert ab, der angibt, ob ein SortedList-Objekt eine feste Größe hat.

IsReadOnly

Ruft einen Wert ab, der angibt, ob ein SortedList-Objekt schreibgeschützt ist.

IsSynchronized

Ruft einen Wert ab, der angibt, ob der Zugriff auf ein SortedList-Objekt synchronisiert (threadsicher) ist.

Item[Object]

Ruft den Wert ab, der einem bestimmten Schlüssel in einem SortedList-Objekt zugeordnet ist, oder legt diesen fest.

Keys

Ruft die Schlüssel in einem SortedList-Objekt ab.

SyncRoot

Ruft ein Objekt ab, mit dem der Zugriff auf ein SortedList-Objekt synchronisiert werden kann.

Values

Ruft die Werte in einem SortedList-Objekt ab.

Methoden

Add(Object, Object)

Fügt einem SortedList-Objekt ein Element mit dem angegebenen Schlüssel und Wert hinzu.

Clear()

Entfernt alle Elemente aus einem SortedList-Objekt.

Clone()

Erstellt eine flache Kopie eines SortedList-Objekts.

Contains(Object)

Ermittelt, ob ein SortedList-Objekt einen bestimmten Schlüssel enthält.

ContainsKey(Object)

Ermittelt, ob ein SortedList-Objekt einen bestimmten Schlüssel enthält.

ContainsValue(Object)

Ermittelt, ob ein SortedList-Objekt einen bestimmten Wert enthält.

CopyTo(Array, Int32)

Kopiert SortedList-Elemente in ein eindimensionales Array-Objekt, beginnend mit dem angegebenen Index im Array.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetByIndex(Int32)

Ruft den Wert am angegebenen Index in einem SortedList-Objekt ab.

GetEnumerator()

Gibt ein IDictionaryEnumerator-Objekt zurück, das ein SortedList-Objekt durchläuft.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetKey(Int32)

Ruft den Schlüssel am angegebenen Index in einem SortedList-Objekt ab.

GetKeyList()

Ruft die Schlüssel in einem SortedList-Objekt ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValueList()

Ruft die Werte in einem SortedList-Objekt ab.

IndexOfKey(Object)

Gibt den nullbasierten Index des angegebenen Schlüssels in einem SortedList-Objekt zurück.

IndexOfValue(Object)

Gibt den nullbasierten Index des ersten Vorkommens des angegebenen Werts in einem SortedList-Objekt zurück.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
Remove(Object)

Entfernt das Element mit dem angegebenen Schlüssel aus einem SortedList-Objekt.

RemoveAt(Int32)

Entfernt das Element am angegebenen Index aus einem SortedList-Objekt.

SetByIndex(Int32, Object)

Ersetzt den Wert an einem bestimmten Index in einem SortedList-Objekt.

Synchronized(SortedList)

Gibt einen synchronisierten (threadsicheren) Wrapper für ein SortedList-Objekt zurück.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TrimToSize()

Legt die Kapazität auf die tatsächliche Anzahl der in einem SortedList-Objekt enthaltenen Elemente fest.

Explizite Schnittstellenimplementierungen

IEnumerable.GetEnumerator()

Gibt einen IEnumerator zurück, der SortedList durchläuft.

Erweiterungsmethoden

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um

OfType<TResult>(IEnumerable)

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

AsParallel(IEnumerable)

Ermöglicht die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Konvertiert einen IEnumerable in einen IQueryable.

Gilt für:

Threadsicherheit

Öffentliche statische (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Ein SortedList Objekt kann mehrere Reader gleichzeitig unterstützen, solange die Auflistung nicht geändert wird. Um die Threadsicherheit des SortedListzu gewährleisten, müssen alle Vorgänge über den von der Synchronized(SortedList) -Methode zurückgegebenen Wrapper ausgeführt werden.

Die Enumeration einer Auflistung ist systemintern keine threadsichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, besteht die Möglichkeit, dass andere Threads sie ändern. Dies führt dazu, dass der Enumerator eine Ausnahme auslöst. Um während der Enumeration Threadsicherheit zu gewährleisten, können Sie entweder die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen, die aus von anderen Threads stammenden Änderungen resultieren, abfangen.

Weitere Informationen