Maison > développement back-end > Golang > Comment supprimer efficacement les éléments en double d'une Go Slice ?

Comment supprimer efficacement les éléments en double d'une Go Slice ?

Barbara Streisand
Libérer: 2024-12-26 21:23:17
original
264 Les gens l'ont consulté

How to Efficiently Remove Duplicate Elements from a Go Slice?

Suppression de chaînes ou d'entiers en double d'une tranche dans Go

Problème :
Vous avez une tranche de villes d'étudiants qui peuvent contenir des entrées en double. Vous souhaitez créer une solution générique pour supprimer toutes les chaînes en double de n'importe quelle tranche.

Solution inefficace :
Votre solution actuelle consiste à vérifier l'existence de chaque élément de la tranche dans une autre boucle, ce qui est inefficace pour les grandes tranches.

Solution efficace : utiliser une carte
Un moyen efficace de supprimer les doublons est utiliser une carte pour stocker des éléments uniques. Au fur et à mesure que vous parcourez la tranche, vérifiez si l'élément actuel existe dans la carte. Sinon, ajoutez-le à la carte et au résultat filtré.

Solution générique :
Voici une fonction générique pour supprimer les doublons de n'importe quelle tranche, où T peut être n'importe quel type comparable :

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
}
Copier après la connexion

Solutions spécifiques pour les chaînes et les entiers :
Pour simplifier votre code, vous pouvez également créer des fonctions spécifiques pour les chaînes et les entiers :

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

func removeDuplicateInt(intSlice []int) []int {
    // [Remove duplicate code here]
}
Copier après la connexion

Exemple d'utilisation :

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

uniqueStudentsCities := removeDuplicate(studentsCities)
fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]
Copier après la connexion

En utilisant cette approche, vous pouvez supprimer efficacement les doublons de n'importe quelle tranche, quel que soit son type.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal