Entfernung von Duplikaten aus einem Array in Swift: Tutorial für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Wie man Duplikate in einem Swift-Array loswird: Verständliche Anleitung für Anfänger

\n\n

Haben Sie schon einmal die Situation erlebt, dass Ihr Array in Swift zu einer "Müllhalde" voller sich wiederholender Daten wurde? Wenn ja, sind Sie nicht allein. Die Frage "Removing duplicate elements from an array in Swift" auf Stack Overflow hat tausende Aufrufe gesammelt – und das ist nicht verwunderlich. Die Arbeit mit Duplikaten ist eine der häufigsten Aufgaben, mit denen jeder Entwickler konfrontiert wird, ob Anfänger oder Profi. Heute werden wir ein für alle Mal klären, wie man elegant und effizient doppelte Elemente aus einem Array in Swift entfernt, unter Verwendung bewährter Methoden und echter Codebeispiele.

\n\n

Warum das wichtig ist: Praktische Szenarien

\n\n

Stellen Sie sich vor, Sie schreiben eine App zur Kontaktverwaltung. Der Benutzer importiert eine Liste mit 1000 Einträgen, aber es sind 200 Duplikate darin. Oder Sie arbeiten mit Daten von einer API, bei der dasselbe Produkt mehrmals ankommt. Duplikate überladen nicht nur die Benutzeroberfläche, sondern können auch zu logischen Fehlern, erhöhter Verarbeitungszeit und Datenverwirrung führen. Die Fähigkeit, Arrays zu bereinigen, ist eine Grundlage, die Ihnen Stunden beim Debuggen spart.

\n\n

In diesem Tutorial betrachten wir mehrere Ansätze: von der einfachen Verwendung von Set bis hin zu fortgeschritteneren Methoden unter Beibehaltung der Elementreihenfolge und der Arbeit mit benutzerdefinierten Datentypen. Los geht's!

\n\n

Methode 1: Verwendung von Set – der schnellste und einfachste Weg

\n\n

Die beliebteste Antwort auf Stack Overflow zum Entfernen von Duplikaten aus einem Array in Swift ist die Verwendung der Struktur Set. Set ist eine ungeordnete Sammlung eindeutiger Elemente. Indem wir ein Array in ein Set umwandeln, werden wir automatisch alle Wiederholungen los und wandeln es dann zurück in ein Array um.

\n\n

Codebeispiel:

\n\n
let numbers = [1, 2, 3, 2, 4, 5, 1, 3]\nlet uniqueNumbers = Array(Set(numbers))\nprint(uniqueNumbers) // Ausgabe: [5, 2, 3, 1, 4] (Reihenfolge kann abweichen)\n
\n\n

Diese Methode arbeitet blitzschnell, besonders bei großen Arrays, da Set Hashing verwendet. Es gibt jedoch einen Haken: Die Reihenfolge der Elemente bleibt nicht erhalten. Wenn Ihnen die ursprüngliche Reihenfolge wichtig ist, lesen Sie weiter.

\n\n

Wann sollte man Set verwenden?

\n
    \n
  • Wenn die Reihenfolge der Elemente keine Rolle spielt.
  • \n
  • Wenn eine möglichst schnelle Lösung benötigt wird.
  • \n
  • Wenn Sie mit primitiven Typen (Int, String, Double usw.) arbeiten, die dem Protokoll Hashable entsprechen.
  • \n
\n\n

Methode 2: Beibehaltung der Reihenfolge mit NSOrderedSet

\n\n

Wenn Sie in einem Projekt arbeiten, in dem die Objective-C-Laufzeitumgebung erlaubt ist (z. B. alte Projekte oder gemischte Codebasen), können Sie NSOrderedSet verwenden. Diese Klasse aus Foundation behält die Reihenfolge des Hinzufügens bei und entfernt automatisch Duplikate.

\n\n

Codebeispiel:

\n\n
import Foundation\n\nlet names = ["Anna", "Boris", "Anna", "Viktor", "Boris"]\nlet uniqueNames = NSOrderedSet(array: names).array as! [String]\nprint(uniqueNames) // Ausgabe: ["Anna", "Boris", "Viktor"]\n
\n\n

Vorteile: Die Reihenfolge bleibt erhalten, der Code ist kurz. Nachteile: Es wird eine Brücke zu Objective-C verwendet, was für ein reines Swift-Projekt überflüssig sein kann. Außerdem arbeitet NSOrderedSet aufgrund des zusätzlichen Overheads langsamer als das native Set.

\n\n

Methode 3: Benutzerdefinierte Filterung unter Beibehaltung der Reihenfolge (reines Swift)

\n\n

Dies ist die flexibelste und empfohlene Methode für modernes Swift. Wir erstellen ein leeres Array für das Ergebnis und ein Set zum Verfolgen bereits gesehener Elemente. Beim Durchlaufen des ursprünglichen Arrays fügen wir ein Element nur dann zum Ergebnis hinzu, wenn es noch nicht im Set vorhanden ist.

\n\n

Codebeispiel:

\n\n
func removeDuplicates<T: Hashable>(from array: [T]) -> [T] {\n    var seen = Set<T>()\n    var result = [T]()\n    \n    for element in array {\n                

Blogs

Buchempfehlungen