Les collections en Java

Le but de cette section est de vous aider à choisir la bonne classe pour la gestion d’un stock d’objet Java.

Les classes à ne plus utiliser :

Les anciennes classes " Vector " et " Hashtable " du JDK 1.1 ne sont plus à utiliser. La classe Vector, par exemple, est Synchronisée sur le multi-threading.

Elles sont cependant conservées pour maintenir un niveau de compatibilité.

 

Ensemble des classes gérant un stock d’objet Java :

Les classes " Abstract " ne peuvent être utilisées telles quelles.

Interface Set : collection d’éléments non dupliqués et non ordonnés. C’est un ensemble mathématique.

Interface List : collection d’éléments ordonnés et éventuellement dupliqués

Interface Map : collection d’éléments indexés par un index

Interface Sorted : collection maintenant l’ordre des éléments stockés.

Interface Iterator : parcours les éléments d’une collection.

 

Classe HashMap : Stocke des couples (clef, élément) dans une table d’index.

Classe ArrayList : Stocke les éléments dans un tableau.

Classe LinkedList : Stocke les éléments dans une liste chaînée.

Classe HashSet : Stocke les éléments dans une HashMap, chaque élément étant à la fois clef et index.

 

Les cas d’utilisation :

 

Faut-il utiliser des Iterators ou des Enums ?

La principale différence est l'accès en synchrone ou pas sur les données. Le schéma suivant illustre pourquoi un Iterator ou un Enum doivent êter accédés à partir d'un accès synchrone ou pas.


La croix rouge indique qu'il n'est pas possible d'accéder aux données de l'itérator depuis un second processus dans le cas où l'itérator est issu du Vector.