Quelle collection choisir ?

Le bon choix de collection, c'est du code plus rapide et plus clair. Comparez les structures les plus courantes et leurs complexités.

Chaque structure de données a ses forces. Choisir la bonne selon le besoin (accès par index, recherche par clé, unicité, ordre FIFO/LIFO) évite des boucles inutiles et du code O(n²). Voici les incontournables, puis un quiz.

Comment chaque collection range les données

Une collection, c'est une façon de ranger des données en mémoire. Chaque structure optimise une opération différente — voici comment, et surtout à quel coût (en notation Big O).

List<T> / tableau — cases contiguës
tab[2] accès par index O(1) 12799456 01234 contiguës Insérer au milieu → décaler les suivants décalage → O(n)
LinkedList<T> — nœuds chaînés
Pas d'index : on parcourt la chaîne de proche en proche TÊTE 12799 nextnextnext accès par position → O(n) insertion / suppression d'un nœud → O(1) (il suffit de rebrancher 2 flèches, si on tient le nœud)
Dictionary<K,V> — table de hachage
CLÉS "alice""bob""carol" hash() clé → n° bucket BUCKETS bucket 0 · vide bucket 2 · vide "alice" → 9 "carol" → 4 "bob" → 7 2 clés dans le bucket 1 = collision (chaînage) accès par clé ≈ O(1)
HashSet<T> — ensemble sans doublon
Contains(99) ? ≈ O(1) 12799456 b0b1b2b3b4 ✓ 99 trouvé dans son bucket Add(7) 7 déjà présent → ignoré un HashSet ne contient jamais de doublon

Choisissez la structure selon l'opération la plus fréquente : accès par index → List ; insertions / suppressions fréquentes → LinkedList ; recherche par clé → Dictionary ; test d'appartenance sans doublon → HashSet.

🎯 Testez-vous

Pour chaque besoin, quelle collection est la plus adaptée ?

Retour aux outils