Heim > Backend-Entwicklung > C++ > Wie kann ich Duplikate effizient aus einer C# -Liste entfernen?

Wie kann ich Duplikate effizient aus einer C# -Liste entfernen?

Susan Sarandon
Freigeben: 2025-01-29 02:12:10
Original
1009 Leute haben es durchsucht

How Can I Efficiently Remove Duplicates from a C# List?

List entfernen

Mehrere Methoden wiederholter Elemente In C#ist das Sammlungsmanagement eine gemeinsame Aufgabe. Manchmal müssen Sie sich wiederholende Elemente aus der Liste löschen. Dies ist eine häufige Nachfrage in verschiedenen Programmierszenarien, wie z. B. Datenreinigung oder Ermittlung eines eindeutigen Wertes. Glücklicherweise gibt es verschiedene Möglichkeiten, dies zu erreichen.

lINQ (geeignet für .NET 3 und höher)

Eine der einfachsten und einfachen Lesen von Lösungen ist die Verwendung von LINQ (Sprachintegration). Diese Funktion wird in .NET 3 eingeführt und bietet eine Anweisungsmethode zur Abfrage und Übermittlung von Daten. Das Folgende ist ein Beispiel für Linq:

Filtern Sie die sich wiederholenden Elemente in der Liste

und geben Sie eine neue Liste
<code class="language-csharp">List<T> withDupes = LoadSomeData();
List<T> noDupes = withDupes.Distinct().ToList();</code>
Nach dem Login kopieren
zurück, die nur eindeutige Elemente enthält.

Methoden transformieren die erzeugte Distinct() in withDupes. noDupes ToList() Wenn Sie bereits LINQ -Ausdrücke verwenden, ist diese Methode sehr bequem. IEnumerable List Hashset

verwenden

Eine andere Wahl ist die Verwendung von Hashset, ein Sammelart, der für schnelle Suche und effiziente wiederholte Erkennung ausgelegt ist. Folgendes ist die Methode, die Sie diesen Vorgang ausführen können:

ursprünglich leer. Wir haben jedes Projekt in durchquert und versucht, es der Sammlung hinzuzufügen. Da Hashset nicht wiederholt wird, kann nur das einzige Projekt erfolgreich hinzugefügt werden. Schließlich verwendet die generierte Sammlung , um wieder auf die Liste zurückzukehren.

Diese Methode liefert die Leistung von O (N) für Einfügen und Suchvorgänge.

<code class="language-csharp">HashSet<T> hashSet = new HashSet<T>();
foreach (var item in withDupes)
{
    hashSet.Add(item);
}
List<T> noDupes = new List<T>(hashSet);</code>
Nach dem Login kopieren
Verwenden Sie Dictionary

HashSet hashSet withDupes Die dritte Methode beinhaltet die Verwendung von Wörterbuch, um das eindeutige Element zu verfolgen: noDupes

Temporärer Speicher für das eindeutige Element. Wir haben die Liste durchquert, um zu überprüfen, ob jedes Element im Wörterbuch vorhanden ist. Wenn nicht, fügen wir es der Liste der Wörterbuch und

hinzu.

Diese Methode liefert auch O (N) -Komplexität, muss jedoch zusätzliche Datenstrukturen für die einzigartige Verfolgung erstellen.

Wählen Sie die richtige Methode

<code class="language-csharp">Dictionary<T, bool> dict = new Dictionary<T, bool>();
List<T> noDupes = new List<T>();
foreach (var item in withDupes)
{
    if (!dict.ContainsKey(item))
    {
        dict.Add(item, true);
        noDupes.Add(item);
    }
}</code>
Nach dem Login kopieren
Der beste Weg, um doppelte Elemente zu löschen, hängt von Ihren spezifischen Anforderungen ab. Wenn Sie LINQ in der Codebibliothek verwendet haben, bietet LINQ eine einfache Lösung. Hashset bietet eine effiziente Such- und Insertionsleistung, wodurch es für eine große Sammlung geeignet ist. Es behält jedoch nicht die ursprüngliche Reihenfolge des Elements bei. Schließlich ermöglicht die Wörterbuchmethode die Verfolgung von Informationen zu jedem einzelnen Element, erzeugt jedoch aufgrund der Erstellung der Wörterbuchdatenstruktur einige Kosten.

Das obige ist der detaillierte Inhalt vonWie kann ich Duplikate effizient aus einer C# -Liste entfernen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage