[C# 1.1]Boucles foreach imbriquees
Bonjour a tous,
j'ai une collection que je conserve en cache dans mon appli, ca m'evite d'aller reinterroger ma BD embarquee.
Cette collection contient des noms d'organismes (avec tous les parametres associes):je dois verifier parmi les differentes adresses de ces organismes (donc une autre collection) lesquelles appartiennent a une region donnee (identifiee par identifiantRegion._id).
J'ai donc les classes suivantes: organisme, adresse, ville, departement et region.
Voila le code que j'utilise
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| foreach(IOrganisme iorganisme in CollectionOrganismes)
{
foreach (IAdresse iadresse in iorganisme._adresseCollection)
{
if (iadresse._ville._departement._region._id.Equals(identifiantRegion._id))
{
ListViewItem lvi = new ListViewItem();
lvi.Tag = iorga;
lvi.Text = iorga._nom ;
MaListViewAMoi.Items.Add(lvi);
}
}
} |
Les performances sont bien evidemment desastreuses, mais je ne vois pas comment faire autrement qu'en passant par ces boucles imbriquees. Voyez vous un moyen d'ameliorer tout ca?
Re: [C# 1.1]Boucles foreach imbriquees
Citation:
Envoyé par Nip
Les performances sont bien evidemment desastreuses, mais je ne vois pas comment faire autrement qu'en passant par ces boucles imbriquees. Voyez vous un moyen d'ameliorer tout ca?
tout dépend de la longueur de tes listes, mais il est clair que le traitement peu être long.
Ce bon Niklaus Wirth, père du Pascal, nous a enseigné dans son ouvrage "Algorithms + Data Structures = Programs" une chose essentielle : les structures de données sont aussi importantes que les algos...
Et dans le cas de ta recherche, à la fois l'algo et la structure de données ne sont pas adaptées tout simplement :-)
Si tes listes sont grandes, ce qui semble être le cas si tu parles de traitements longs, plutôt que des collections d'interfaces, il serait plus sage d'utiliser des listes hashées sur le champ ID comme clé par exemple.
Ou tout autre structure clé/valeur utilisant un système de tri et une recherche dichotomique ou un arbre binaire.
Ta recherche deviendra instantanée...