J'ai besoin d'une structure de données efficace pour stocker une liste d'entiers. Le nombre dans la liste peut varier de 1 à probablement jamais plus de 1000. La liste sera interrogée environ 20 fois par demande. Quel serait le type de collection le plus efficace pour stocker ces?Quelle est la structure de données la plus efficace pour stocker une liste d'entiers qui doivent être recherchés beaucoup dans .Net?
MISE À JOUR
Pour donner un peu plus de perspicacité, nous prendrons www.wikipediamaze.com (a little game I wrote) à titre d'exemple (pas le scénario réel, mais assez près pour la conversation). Pour la liste des puzzles sur une page donnée, je retourne actuellement une liste de la table des puzzles jointe à la table qui stocke les puzzles que l'utilisateur actuel a joué. Au lieu de cela, je veux mettre en cache la liste des puzzles agnostiques à l'utilisateur. Donc ce que je fais est d'abord le chargement et la mise en cache de la liste des puzzles de la base de données. Ensuite, je charge et cache la liste des puzzles que l'utilisateur a joué. Puis, quand je itérer suis sur les casse-tête pour les afficher, je veux faire:
protected BestDataStructure<long> PlayedPuzzles {get; set;} //Loaded from session
protected bool HasBeenPlayed(long puzzleId)
{
return PlayedPuzzles.Contains(puzzleId)
}
A chaque fois qu'ils jouent un nouveau casse-tête, je sauverai l'enregistrement à la base de données et l'ajouter à la liste stockée dans la session.
Merci!
Que voulez-vous dire quand vous dites "interrogé"? – Mark
Je veux dire recherché. J'ai besoin de regarder et voir si elle contient un entier particulier environ 20 fois dans une seule requête. – Micah
Il pourrait y avoir une solution parmi plusieurs. Pourriez-vous fournir un peu plus d'informations telles que * comment * vous voulez effectuer la recherche/quelles informations vous devez extraire? Spécifier la plage des nombres eux-mêmes peut également aider. Bravo – Noldorin