Je récupère une "chaîne []" à partir d'une bibliothèque tierce. Je veux faire un contenant dessus. Quelle est la manière la plus efficace de le faire?Le moyen le plus rapide de faire un contient avec string []
Répondre
Array.indexOf:
bool contains = Array.IndexOf(arr, value) >= 0;
Ou tout simplement utiliser LINQ:
bool contains = arr.Contains(value);
LINQ devrait être "assez rapide" pour la plupart des buts.
Je suis à peu près certain qu'une boucle for
est plus rapide, si la vitesse absolue vous concerne. À savoir,
for (int i = 0; i < arr.Length; ++i)
if (arr[i] == value) return true;
return false;
Sauf si vous connaissez le tableau de chaînes est triée par ordre particulier la chose la plus efficace que vous pouvez faire est algorithme linéaire (c.-à comparer chaque chaîne du tableau jusqu'à ce que vous trouviez un match ou à la fin du tableau .
Si le tableau est trié une recherche binaire est beaucoup
plus rapide. une autre façon d'optimiser l'algorithme (bien que la complexité ne soit pas réduite) est vectoriser les comparaisons de chaînes.
Si vous êtes seulement vérifier un seul moment e, utilisez Array.IndexOf
ou la méthode LINQ Contient comme Marc proposé. Si vous vérifiez plusieurs fois, il peut être plus rapide de convertir d'abord le tableau de chaînes en HashSet<string>
.
Si vous effectuez une recherche une ou deux fois, utilisez une recherche linéaire ou IndexOf.
Si vous recherchez plusieurs fois, placez les chaînes dans un HashSet.
Si vous recherchez des millions de fois de manière critique, utilisez un HashSet et gérez vous-même le nombre de seaux.
Vous pouvez utiliser le IEnumerable.Foreach extension personnalisée
public static class CollectionExtensions
{
public static void ForEach<T>(this IEnumerable list, Action<T> action)
{
foreach (T item in list)
{
action(item);
}
}
}
class Program
{
static void Main(string[] args)
{
String[] list = new String[] { "Word1", "Word2", "Word3" };
list.ForEach<String>(p => Console.WriteLine(p));
list.ForEach(delegate(String p) { Console.WriteLine(p); });
}
}
Hope this aide de.
- 1. Le moyen le plus rapide/le plus court de construire un arbre unique en Ruby?
- 2. Le moyen le plus rapide de suivre l'accès API
- 3. Le moyen le plus rapide de définir des propriétés sur un objet?
- 4. Meilleur/le plus simple/le moyen le plus rapide d'obtenir un chemin relatif entre deux fichiers?
- 5. Quel est le moyen le plus rapide de remplir un tableau avec des nombres en PHP?
- 6. Moyen le plus rapide d'implémenter la suppression de caractères en double dans String (C#)
- 7. moyen le plus rapide d'accéder à un noeud
- 8. Utilisation de XILINX XPS avec Microblaze - le moyen le plus rapide de programmer le fpga
- 9. algorithme le plus rapide pour obtenir le changement moyen
- 10. Le moyen le plus rapide d'attraper l'écran? N'importe quelle langue
- 11. Quel est le moyen le plus rapide d'obtenir le contenu String d'une URL à l'aide de Cocoa/iPhoneSDK?
- 12. Le moyen le plus rapide de faire une capture d'écran dans Flex 3?
- 13. Quel est le moyen le plus rapide de générer un ensemble unique en .net 2
- 14. Le moyen le plus rapide de faire une boucle et de copier des données d'un DataSet vers un autre DataSet
- 15. Le moyen le plus rapide de faire des INSERTS en utilisant IBATIS
- 16. Le moyen le plus rapide d'apprendre Linq aux entités
- 17. Le moyen le plus rapide d'écrire une chaîne sur Windows?
- 18. Quel est le moyen le plus rapide de commencer avec le framework Kohana PHP?
- 19. Le moyen le plus rapide de mettre à jour les espaces de noms avec ReSharper?
- 20. Le moyen le plus rapide pour supprimer un arbre de répertoires dans un fichier batch
- 21. Le moyen le plus rapide d'obtenir le code d'échafaudage créé avec C#/ASP.NET
- 22. moyen le plus rapide de comparer une chaîne avec un tableau de chaînes en C# 2.0
- 23. moyen le plus rapide aux données commentaire magasin python
- 24. Quel est le moyen le plus rapide de détecter un hôte inaccessible en Java?
- 25. Quel est le moyen le plus rapide de dédupliquer une chaîne en C# (ASP.net)
- 26. Le moyen le plus rapide pour stocker un grand ensemble de données (C# ASP.net)
- 27. Le moyen le plus rapide de compter le nombre de transitions binaires dans un entier non signé
- 28. Le moyen le plus rapide de formater un numéro de téléphone en C#?
- 29. NSMutableArray. Quel est le moyen le plus rapide pour le convertir en un tableau C simple?
- 30. Le moyen le plus rapide pour saisir le nom de domaine/hôte en utilisant javascript
Bonne prise avec HashSet; +1 ;-p –