Compréhension des Collections et leurs Avantages
Les tableaux présentent certaines limitations :
- La taille doit être définie au moment de la création et ne peut pas être modifiée
- Tous les éléments doivent être du même type
- Ajouter ou supprimer des éléments est complexe
Les collections offrent une solution plus flexible :
- Elles peuvent stocker un nombre dynamique d'objets
- Elles fournissent des méthodes pratiques comme add, remove, set, get
- Les opérations d'ajout/suppression sont simplifiées
Architecture des Collections
Java propose deux grandes catégories de collections :
- Collection (collections à une seule valeur)
- Map (collections à deux valeurs)
Les interfaces principales :
- Collection : implémentée par Set et List
- Map : stocke des paires clé/valeur
Interface Collection et Méthodes Usuelles
Les collections implémentent l'interface Iterable :
public interface Collection <E> extends Iterable <E>
Méthodes principales :
- add() : ajoute un élément
- remove() : supprime un élément
- contains() : vérifie la présence d'un élément
- size() : retourne le nombre d'éléments
- isEmpty() : vérifie si la collection est vide
- clear() : vide la collection
Itération avec Iteraotr
L'itérateur permet de parcourir les collections :
Iterator iterator = collection.iterator();
while(iterator.hasNext()) {
Object element = iterator.next();
System.out.println(element);
}
Interface List et Méthodes Spécifiques
List est une sous-interface de Collection :
- Éléments ordonnés
- Peut contenir des doublons
- Accès par index
Méthodes spécifiques :
- add(index, element) : inseriton à un index spécifique
- get(index) : récupération par index
- remove(index) : suppression par index
- set(index, element) : remplacement par index
Implémentations de List
ArrayList, LinkedList, Vector :
- ArrayList : tableau dynamique
- LinkedList : liste doublement chaînée
- Vector : version synchronisée d'ArrayList
Interface Set et Méthodes
Set garantit l'unicité des éléments :
- Pas d'ordre défini
- Pas de duplication
- Maximum un élément null
HashSet et Mécanismes Internes
HashSet utilise un HashMap sous-jacent :
- Stockage par table de hachage
- Gestion des collisions par chaînes
- Utilise hashCode() et equals()
Map et Méthodes Principales
Les interfaces Map stockent des paires clé/valeur :
- put(clé, valeur) : ajout/modification
- get(clé) : récupération
- remove(clé) : suppression
- keySet() : ensemble des clés
- entrySet() : ensemble des paires
Implémentations de Map
- HashMap : implémentation standard
- Hashtable : synchronisée
- Properties : gestion des fichiers de configuration
Classes Utilitaires
Collections fournit des méthodes statiques :
- sort() : tri
- reverse() : inversion
- shuffle() : mélange aléatoire
- max()/min() : recehrche extrêmes
- replaceAll() : remplacement
Choix des Implémentations
Le choix dépend des besoins :
- Recherche fréquente : ArrayList
- Insertions/suppressions fréquentes : LinkedList
- Ordre d'insertion important : LinkedHashSet
- Clés triées : TreeMap