So verwenden Sie SortedDictionary, SortedList, SortedSet in C#

SortedDictionary, SortedList und SortedSet sind Sammlungsklassen, die Schlüssel/Wert-Paare speichern und nach Schlüssel sortiert werden können. Ein SortedSet ist eine Sammlung, die in einer sortierten Reihenfolge verwaltet wird. SortedList ist eine Sammlung, mit der Sie Schlüssel und Werte mithilfe von Indizes abrufen können. SortedDictionary hat keinen Index, fügt aber unsortierte Daten schneller ein und löscht sie schneller als SortedList.

Dieser Artikel beschreibt SortedDictionary, SortedList, SortedSet, ihre Unterschiede und wie man mit ihnen in C# arbeitet. Visual Studio 2019 muss auf Ihrem System installiert sein, um die in diesem Artikel bereitgestellten Codebeispiele verwenden zu können. Wenn Sie noch keine Kopie haben, laden Sie Visual Studio 2019 hier herunter.

Erstellen Sie ein .NET Core-Konsolenanwendungsprojekt in Visual Studio

Lassen Sie uns zunächst ein .NET Core-Konsolenanwendungsprojekt in Visual Studio erstellen. Angenommen, Visual Studio 2019 ist auf Ihrem System installiert, führen Sie die unten beschriebenen Schritte aus, um ein neues .NET Core-Konsolenanwendungsprojekt in Visual Studio zu erstellen.

    Starten Sie die Visual Studio-IDE. Klicken Sie auf Neues Projekt erstellen. Wählen Sie im Fenster „Neues Projekt erstellen“ Konsolen-App (.NET Core) aus der Liste der angezeigten Vorlagen aus. [次へ]Klicken. Unten gezeigt[新しいプロジェクトの構成]Geben Sie im Fenster den Namen und den Speicherort des neuen Projekts an. [作成]Klicken.

In den folgenden Abschnitten dieses Artikels wird dieses Projekt verwendet, um mit SortedDictionary, SortedList und SortedSet zu arbeiten.

Verwenden Sie die SortedSet-Klasse in C #

SortedSet, das dem System.Collections.Generic-Namespace zugeordnet ist Eine Klasse stellt eine generische Sammlung von Objekten dar, die in einer sortierten Reihenfolge vorhanden sind. Eine dynamische Sammlung, die Unterstützung für mathematische Operationen (Schnittmengen, Vereinigungen usw.) bereitstellt. Das heißt, das Hinzufügen und Entfernen von Elementen erhöht oder verringert die Größe der Objekte in dieser Sammlung.

SortedSets enthalten nur eindeutige Elemente und werden verwendet, um Daten in Sammlungen zu speichern, die sortiert sein müssen. Standardmäßig sind die Elemente des SortedSet in aufsteigender Reihenfolge. SortedSet Die Klasse implementiert die folgende Schnittstelle:

    IReadOnlyCollection IDeserializationCallBack IEnumerable ISet ISerializable

SortedSet Die Anzahl der Elemente, die in einer Instanz von gespeichert werden können, wird als Kapazität bezeichnet. Das folgende Code-Snippet zeigt, wie ein ganzzahliges SortedSet erstellt und sein Wert darin gespeichert wird.

SortedSet<int> sortedIntegers = new SortedSet<int>();
sortedIntegers.Add(1);
sortedIntegers.Add(5);
sortedIntegers.Add(3);
sortedIntegers.Add(2);
sortedIntegers.Add(4);

Der folgende Codeausschnitt zeigt, wie die Elemente eines SortedSet abgerufen werden.

foreach (var x in sortedIntegers)
{
    Console.WriteLine(x);
}

Als Referenz finden Sie hier die vollständige Codeliste:

static void Main(string[] args) {
      SortedSet < int > sortedIntegers = new SortedSet < int > ();
      sortedIntegers.Add(1);
      sortedIntegers.Add(5);
      sortedIntegers.Add(3);
      sortedIntegers.Add(2);
      sortedIntegers.Add(4);

      foreach(var x in sortedIntegers) {
            Console.WriteLine(x);
      }
      Console.Read();
}

Wenn Sie das obige Programm ausführen, werden die Ganzzahlen im Konsolenfenster in aufsteigender Reihenfolge angezeigt, wie in Abbildung 1 dargestellt.

IDG

Abbildung 1.

Der folgende Codeausschnitt zeigt, wie eine Zeichenfolge in einem SortedSet von Zeichenfolgen gespeichert und in einem Konsolenfenster angezeigt wird.

SortedSet<string> sortedStrings = new SortedSet<string>();
sortedStrings.Add("India");
sortedStrings.Add("USA");
sortedStrings.Add("England");
sortedStrings.Add("Australia");
sortedStrings.Add("New Zealand");
foreach (string str in sortedStrings)
{
   Console.WriteLine(str);
}

Wenn Sie das obige Programm ausführen, werden die Ländernamen im Konsolenfenster in aufsteigender Reihenfolge angezeigt, wie in Abbildung 2 dargestellt.

Sortierte Sammlung c02 IDG

Figur 2.

Verwenden Sie die SortedList-Klasse in C#

SortedList stellt eine Sammlung von Objekten dar, die als nach Schlüssel sortierte Schlüssel/Wert-Paare gespeichert sind. Sie können sowohl generische als auch nicht generische Versionen der SortedList finden. Generische Versionen werden im System.Collections.Generic-Namespace definiert, während nicht generische Versionen im System.Collections-Namespace definiert werden.

Sie können auf die Objekte in der SortedList nach Schlüssel oder Index zugreifen. Der SortedList-Schlüssel muss eindeutig sein und darf nicht null sein.

SortedDictionary wird mit einem rot-schwarzen binären Suchbaum implementiert, während SortedList mit zwei internen Arrays implementiert wird. Eine für Schlüssel und eine für Werte. SortierteListe Ist das sortierte Wörterbuch Es verbraucht weniger Speicher und bietet einen schnelleren indizierten Abruf von Schlüsseln und Werten. SortedDictionary bietet jedoch schnellere Einfüge- und Löschvorgänge als SortedList. Vergleicht O (log n) und O (n) in der SortedList.

Der folgende Codeausschnitt zeigt, wie Daten in einer SortedList gespeichert und die Daten in einem Konsolenfenster abgerufen und angezeigt werden.

SortedList<int,string> authorList = new SortedList<int, string>();
authorList.Add(1, "Joydip");
authorList.Add(3, "Steve");
authorList.Add(2, "Michael");
foreach (KeyValuePair<int, string> pair in authorList)
{
    Console.WriteLine("Key: {0}tValue: {1}", pair.Key, pair.Value);
}

Wenn Sie das obige Programm ausführen, sehen Sie die Ausgabe in einem Konsolenfenster, wie in Abbildung 3 dargestellt.

Sortierte Sammlung c03 IDG

Figur 3.

Verwenden Sie die SortedDictionary-Klasse in C #

Sortiertes Wörterbuch Ist das KeyValuePair Repräsentiert eine Sammlung von. Wie oben erwähnt, ist das Sorted Dictionary als Rot-Schwarz-Baum implementiert. Das Einfügen und Entfernen von Elementen aus dem SortedDictionary benötigt O (log n) Zeit, während SortedList für dieselbe Operation O (n) Zeit benötigt. SortedDictionary sortiert wie SortedList nach Schlüsseln.

Der folgende Codeausschnitt zeigt, wie Elemente im SortedDictionary gespeichert, abgerufen und im Konsolenfenster angezeigt werden.

SortedDictionary<int, int> keyValuePairs  = new SortedDictionary<int, int>();
keyValuePairs.Add(1, 100);
keyValuePairs.Add(5, 500);
keyValuePairs.Add(3, 300);
keyValuePairs.Add(4, 400);
keyValuePairs.Add(2, 200);
foreach (KeyValuePair<int, int> pair in keyValuePairs)
{
    Console.WriteLine("Key: {0}tValue: {1}", pair.Key, pair.Value);
}

Wenn Sie das obige Programm ausführen, sehen Sie eine Ausgabe ähnlich der in Abbildung 4 gezeigten.

Sortierte Sammlung c04 IDG

Figur 4.

Einfüge- und Löschvorgänge im SortedDictionary nehmen O (log n), unabhängig davon, wo in der Sammlung Sie Elemente hinzufügen oder entfernen. Das Hinzufügen oder Entfernen von Elementen am Ende einer SortedList erfordert ebenfalls ein O (log n), jedoch nur am Ende der Liste.

Wenn Sie einen Index verwenden müssen, um auf ein Element zuzugreifen oder die sortierten Daten in einer Sammlung auf einmal aufzufüllen, können Sie SortedList verwenden. Wenn es wichtig ist, den Arbeitsspeicheraufwand zu minimieren, und Sie mehr Suchvorgänge und weniger Einfüge- und Löschvorgänge benötigen, können Sie SortedList auswählen. Wenn Sie unsortierte Daten hinzufügen möchten, ist das Sorted Dictionary eine gute Wahl. Es eignet sich auch, um unsortierte Artikel willkürlich der Sammlung hinzuzufügen oder willkürlich aus der Sammlung zu entfernen. Das Gedächtnis ist keine Einschränkung.

So machen Sie mehr mit C#:

Copyright © 2021 IDG Communications, Inc.

Fluance Ai41 Speaker Review: Focus Size Power Plant Theranos-Gerät lief ein „Nullprotokoll“, um die eigentliche Demo für Investoren zu überspringen. Pixel 6, Pixel 6 Pro India starten ungeplant, Google bestätigte How to Water Your Plants While Away – CNET Mobile Sheriff zielte darauf ab, dies zu verhindern die Verabschiedung von Waffengesetzen – WKRG News 5 Latest Technology News

    Fluance Ai41 Speaker Review: Focus Size Power Plant Theranos-Gerät lief ein „Nullprotokoll“, um die eigentliche Demo für Investoren zu überspringen. Pixel 6, Pixel 6 Pro India starten ungeplant, Google bestätigte How to Water Your Plants While Away – CNET Mobile Sheriff zielte darauf ab, dies zu verhindern die Verabschiedung von Waffengesetzen – WKRG News 5

Leave a Comment