Heim >Backend-Entwicklung >Golang >Wie entferne ich doppelte Elemente effizient aus einem 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!