Middle
Décrivez la hiérarchie des collections en Java.
sobes.tech IA
Réponse de l'IA
La hiérarchie des collections en Java est basée sur un ensemble d'interfaces qui fournissent une manière standard de représenter des groupes d'objets.
Interfaces principales :
Collection: interface racine de la hiérarchie. Définit les opérations de base applicables à toutes les collections : ajout, suppression, vérification de la présence d'éléments, détermination de la taille.Set: collection ne contenant pas de doublons et n'ayant pas d'ordre défini pour les éléments.List: collection ordonnée avec accès aux éléments par index. Peut contenir des doublons.Queue: collection destinée à stocker des éléments avant traitement. Suit généralement la règle FIFO (Premier entré, premier sorti), mais il existe d'autres implémentations.Deque: file d'attente double. Supporte l'ajout et la suppression d'éléments des deux extrémités.Map: collection stockant des paires "clé-valeur". Les clés doivent être uniques. N'étend pas l'interfaceCollection.
Classes principales implémentant ces interfaces (exemples) :
| Interface | Classes implémentantes (exemples) | Description |
|---|---|---|
Set |
HashSet, LinkedHashSet, TreeSet |
Sans doublons. HashSet - sans ordre, LinkedHashSet - conserve l'ordre d'insertion, TreeSet - trié. |
List |
ArrayList, LinkedList, Vector |
Ordonnée. ArrayList - basée sur un tableau, LinkedList - basée sur une liste chaînée, Vector - synchronisée (obsolète). |
Queue |
LinkedList, PriorityQueue |
Pour traitement. LinkedList - FIFO, PriorityQueue - basée sur des priorités. |
Deque |
ArrayDeque, LinkedList |
File d'attente double. ArrayDeque - basée sur un tableau, LinkedList - basée sur une liste chaînée. |
Map |
HashMap, LinkedHashMap, TreeMap, Hashtable |
Clé-valeur. HashMap - sans ordre garanti, LinkedHashMap - conserve l'ordre d'insertion/d'accès, TreeMap - trié par clés, Hashtable - synchronisé (obsolète). |
Exemple d'utilisation de ArrayList :
// Création d'une ArrayList de chaînes
List<String> fruits = new ArrayList<>();
// Ajout d'éléments
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// Accès par index
String premierFruit = fruits.get(0); // Apple
// Taille de la collection
int taille = fruits.size(); // 3
Exemple d'utilisation de HashSet :
// Création d'un HashSet d'entiers
Set<Integer> nombres = new HashSet<>();
// Ajout d'éléments (les doublons sont ignorés)
nombres.add(1);
nombres.add(2);
nombres.add(2); // Ignoré
// Taille de la collection
int taille = nombres.size(); // 2
Exemple d'utilisation de HashMap :
// Création d'un HashMap : clé - String, valeur - Integer
Map<String, Integer> ages = new HashMap<>();
// Ajout de paires clé-valeur
ages.put("Alice", 30);
ages.put("Bob", 25);
// Récupération de la valeur par clé
int ageAlice = ages.get("Alice"); // 30
// Vérification de la présence d'une clé
boolean aCléBob = ages.containsKey("Bob"); // true