Java : Les collections
Comment choisir le bon type de collection, comment fonctionnent-elles ? Un petit résumé des possibilités offertes par ces structures de données.
Tout d'abord, pour un cours complet sur les possibilités des collections en Java, je vous renvoie sur ce tutoriel. Il est plutôt complet, alors mon article sera quelquechose de simplifié.
Les collections servent à gérer efficacement les données. On en distingue trois types : listes (java.util.List), ensembles (java.util.Set) et associations (java.util.Map).
Les listes : une suite d'éléments ordonnés et accessibles par leur index. Les listes n'empêchent pas la présence de doublons.
Méthodes utiles pour les listes
- size
- isEmpty
- add
- remove
- set
- get
On distingue trois styles de listes :
- ArrayList
- L'accès aux éléments par leur indice est performant. De plus, les opérations d'ajout et de suppression d'éléments en fin de liste sont optimisés.
- LinkedList
Ces listes sont rangées à l'aide d'une liste chaînée. Les opérations d'ajout et de suppression sont optimisées pour n'importe quel indice (pas seulement à la fin de la liste), cependant l'accès aux éléments par leur indice est ralenti.
Vector
Cette classe est similaire à l'ArrayList ; la seule différence est que Vector est synchronisée et peut être utilisée par plusieurs processus en même temps sans aucun risque. Cependant de nombreux sites précisent qu'il est préférable d'utiliser ArrayList car Vector est une classe plutôt ancienne, et que la compabilité n'est pas toujours assurée.
Les ensembles : un groupe d'éléments uniques.
Méthodes utiles pour les ensembles
- add
- remove
- contains
- size
On distingue trois styles d'ensembles :
HashSet
Ensemble basique d'éléments uniques, pas de fonctionnaliés particulières. Les éléments ne sont pas ordonnés, ce qui en fait le plus rapide des ensembles.
TreeSet
Les éléments sont ordonnés en fonction de leur ordre naturel, ou d'un ordre imposé par un java.util.Comparator.
LinkedHashSet
Les éléments sont ordonnés en fonction de leur ordre d'insertion dans l'ensemble.
Les associations : créer un ensemble clé/valeur (tableaux associatifs).
On distingue cinq types de Map :
HashMap
La classe la plus standard, adaptée à la majorité des situations.
TreeMap
Ajoute une fonction de tri des clés de la Map, en implémentant un java.util.Comparator.
LinkedHashMap
Similaire au LinkedHashSet, ordonne les éléments selon leur ordre d'ajout dans la collection.
IdentityHashMap
Permet de comparer deux clés à l'aide de l'opérateur "==", contrairement aux autres Map où il est nécessaire d'utiliser la méthode equals().
WeakHashMap
Utilise les références faibles : si une clé n'est plus référencée dans le programme, le couple clé/valeur est automatiquement supprimé de la collection.
Tous ces éléments sont inspirés de cette FAQ Java et des exercices que j'ai réalisés jusqu'à aujourd'hui.
A vous maintenant de choisir la collection qui vous convient !