cybercursus

Les collections

14 min · Intermédiaire · 3 octobre 2026

Sommaire
  1. ArrayList : une liste de taille variable
  2. HashMap : des paires clé/valeur
  3. Parcourir une HashMap
  4. À toi de jouer

ArrayList : une liste de taille variable

java
import java.util.ArrayList;

ArrayList<String> fruits = new ArrayList<>();
fruits.add("pomme");
fruits.add("banane");
fruits.add("cerise");

System.out.println(fruits.get(0));   // "pomme"
System.out.println(fruits.size());   // 3

fruits.remove("banane");
System.out.println(fruits);          // [pomme, cerise]

Contrairement à un tableau, .size() (pas .length) donne le nombre d’éléments, et .add()/.remove() modifient la taille dynamiquement.

Info

ArrayList<Integer> stocke des objets Integer, pas des int primitifs directement. Java effectue automatiquement la conversion (autoboxing) entre les deux lors de l’ajout ou de la lecture.

HashMap : des paires clé/valeur

java
import java.util.HashMap;

HashMap<String, Integer> ages = new HashMap<>();
ages.put("Alice", 25);
ages.put("Bob", 30);

System.out.println(ages.get("Alice"));       // 25
System.out.println(ages.containsKey("Bob")); // true
System.out.println(ages.getOrDefault("Zoe", 0)); // 0, Zoe absente

.getOrDefault() évite une erreur si la clé n’existe pas, en renvoyant une valeur de repli, l’équivalent du .get() avec valeur par défaut de Python.

Parcourir une HashMap

java
for (String nom : ages.keySet()) {
  System.out.println(nom + " a " + ages.get(nom) + " ans.");
}
// "Alice a 25 ans."
// "Bob a 30 ans."

.keySet() renvoie l’ensemble des clés, qu’on peut ensuite parcourir pour accéder à chaque valeur associée.

À toi de jouer

java
import java.util.ArrayList;

ArrayList<Integer> nombres = new ArrayList<>();
nombres.add(10);
nombres.add(20);
nombres.add(30);

int somme = 0;
for (int n : nombres) {
  somme += n;
}
System.out.println(somme);
Que produit ce code à l'exécution ?
Quelle est la principale différence entre un tableau (int[]) et une ArrayList<Integer> ?
Pourquoi une ArrayList ne peut-elle pas être déclarée directement avec des types primitifs, comme `ArrayList<int>` ?

Pour aller plus loin

Commentaires

Recherche