Heim >Backend-Entwicklung >Golang >Wie entferne ich doppelte Elemente effizient aus einem Go-Slice?

Wie entferne ich doppelte Elemente effizient aus einem Go-Slice?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 21:23:17255Durchsuche

How to Efficiently Remove Duplicate Elements from a Go Slice?

Entfernen doppelter Zeichenfolgen oder Ganzzahlen aus einem Slice in Go

Problem:
Sie haben ein Slice von Studentenstädte, die möglicherweise doppelte Einträge enthalten. Sie möchten eine generische Lösung erstellen, um alle doppelten Zeichenfolgen aus jedem Slice zu entfernen.

Ineffiziente Lösung:
Ihre aktuelle Lösung besteht darin, jedes Element im Slice auf Existenz in einer anderen Schleife zu überprüfen. was für große Slices ineffizient ist.

Effiziente Lösung: Verwendung einer Karte
Eine effiziente Möglichkeit, Duplikate zu entfernen ist um eine Karte zum Speichern einzigartiger Elemente zu verwenden. Überprüfen Sie beim Durchlaufen des Slice, ob das aktuelle Element in der Karte vorhanden ist. Wenn nicht, fügen Sie es der Karte und dem gefilterten Ergebnis hinzu.

Generische Lösung:
Hier ist eine generische Funktion zum Entfernen von Duplikaten aus jedem Slice, wobei T ein beliebiger vergleichbarer Typ sein kann:

func removeDuplicate[T comparable](sliceList []T) []T {
    allKeys := make(map[T]bool)
    list := []T{}
    for _, item := range sliceList {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}

Spezifische Lösungen für Strings und Ganzzahlen:
Zur Vereinfachung Ihres Code können Sie auch spezifische Funktionen für Zeichenfolgen und Ganzzahlen erstellen:

func removeDuplicateStr(strSlice []string) []string {
    // [Remove duplicate code here]
}

func removeDuplicateInt(intSlice []int) []int {
    // [Remove duplicate code here]
}

Beispielverwendung:

studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}

uniqueStudentsCities := removeDuplicate(studentsCities)
fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]

Mit diesem Ansatz können Sie Duplikate effektiv aus entfernen jedes Slice, unabhängig von seiner Art.

Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Elemente effizient aus einem Go-Slice?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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