Moyen efficace pour supprimer les doublons de chaînes à partir d'un tableau de chaînes en C#
Je voudrais savoir une méthode efficace pour supprimer les doublons d'un tableau de chaînes en C#.
Par exemple,
string[] a = { "abc", "xyz","abc", "def", "ghi", "asdf", "ghi","xd", "abc" };
deviendra,
string[] a = { "abc", "xyz","def", "ghi", "asdf", "xd" };
Comment combler les lacunes après avoir retiré les doublons?
Est-il un moyen de le faire sans l'aide d'un supplément de tableau pour stocker les éléments?
Méthode que j'ai utilisé:
1) Sorted the array
2) Replaced the duplicate entries with null
3) Copied NOT null string to a new array.
Mais à la recherche d'une optimisation du chemin à faire de même.
EDIT: je suis à l'aide .NET 2.0 et VS 2005
OriginalL'auteur SyncMaster | 2011-04-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un HashSet:
Non,
var
est venu en C# 3.0OriginalL'auteur Ohad Schneider
Vous ne pouvez pas redimensionner un tableau .NET, donc quel que soit le moyen que vous utilisez pour supprimer les doublons, vous devez créer un nouveau tableau pour le résultat.
Vous pouvez utiliser un
HashSet<string>
facilement supprimer les doublons:Le hachage ensemble d'ajouter les éléments de la matrice de lui-même, et de supprimer systématiquement les doublons. Comme l'ensemble de hachage utilise des codes de hachage pour vérifier les éléments existants, ce sera un peu plus rapide que le tri des éléments, cependant, le résultat n'est évidemment pas triés.
Le
ToArray
n'est pas une méthode dans la classe elle-même, c'est une méthode d'extension. Vous avez besoinusing System.Linq;
en haut du fichier de l'extension des méthodes.OriginalL'auteur Guffa
Prendre un coup d'oeil à IEnumerable.Méthode Distinct()
OriginalL'auteur archil
Si vous l'utilisez .NET 3.0, vous pouvez utiliser LINQ:
OriginalL'auteur Achinth Gurkhi