DR ZOTCHI GIOVANI – CHAP 9 JAVA EXO
Chapitre 9 : Les Collections (List, Set, Map), toujours au format statique pour faciliter votre
lecture.
I. Quiz (QCM) - Test de connaissances
1. Quelle est la principale différence entre une List et un Set ?
A) Une List n'accepte que des nombres, un Set n'accepte que des chaînes de
caractères.
B) Une List conserve l'ordre d'insertion et accepte les doublons, un Set refuse
strictement les doublons.
C) Un Set a une taille dynamique, une List a une taille fixe.
D) Il n'y a aucune différence, ce sont deux noms pour la même chose.
2. Le code List<int> nombres = new ArrayList<>(); est-il valide en Java ?
A) Oui, c'est la syntaxe standard.
B) Non, car ArrayList ne prend pas de chevrons < >.
C) Non, car les collections ne peuvent pas stocker de types primitifs (int). Il faut
utiliser la classe enveloppe Integer.
D) Oui, mais seulement depuis Java 8.
3. Dans une Map<String, Double>, que se passe-t-il si vous utilisez put("Alice", 15.0)
puis put("Alice", 18.0) ?
A) La Map contient deux entrées pour "Alice".
B) Le programme plante (Exception) car la clé "Alice" existe déjà.
C) L'ancienne valeur (15.0) est écrasée par la nouvelle (18.0) pour la clé "Alice".
D) La nouvelle valeur est ignorée, "Alice" garde 15.0.
4. Quelle méthode est utilisée pour connaître le nombre d'éléments présents dans une
ArrayList ?
A) .length
B) .length()
C) .size()
D) .count()
II. Exercices d'application
Exercice 1 : Manipulation d'une Liste
1. Créez une ArrayList de chaînes de caractères (String) nommée couleurs.
2. Ajoutez-y "Rouge", "Vert", "Bleu" et "Jaune".
3. Supprimez "Vert" de la liste.
4. Utilisez une boucle for-each pour afficher toutes les couleurs restantes.
1
DR ZOTCHI GIOVANI – CHAP 9 JAVA EXO
Exercice 2 : Utilisation d'un Dictionnaire (Map)
1. Créez une HashMap nommée annuaire où les clés sont des noms (String) et les
valeurs sont des numéros de téléphone (Integer ou String).
2. Ajoutez 3 personnes à votre annuaire.
3. Affichez le numéro d'une personne spécifique en utilisant sa clé.
III. Les Exercices
Piège n°1 : La suppression en pleine boucle Que va-t-il se passer si on exécute ce code ?
Java
List<String> mots = new ArrayList<>();
[Link]("A"); [Link]("B"); [Link]("C");
for (String mot : mots) {
if ([Link]("B")) {
[Link](mot); // Suppression pendant le parcours
}
}
Piège n°2 : L'illusion des doublons dans un Set Si Livre est une classe avec un titre et un
auteur, pourquoi ce HashSet finit-il par contenir DEUX livres identiques, alors que les Set
sont censés interdire les doublons ?
Java
Set<Livre> bibliotheque = new HashSet<>();
Livre l1 = new Livre("Java pour les Nuls", "Barry Burd");
Livre l2 = new Livre("Java pour les Nuls", "Barry Burd");
[Link](l1);
[Link](l2);
[Link]([Link]()); // Affiche 2 !