Itérateurs
Parcourir une collection sans connaître sa représentation : l'itérateur et ses trois méthodes, la boucle pour chaque, le parcours d'un dictionnaire, et ce qui se passe quand on modifie la collection pendant le parcours.
- 26 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Les étapes
- Mises en situation
Quelques cartes du deck
Itérateur : de quoi s'agit-il ?
Voir la réponse
Objet qui parcourt une collection élément par élément et sait s'il en reste un, sans exposer la façon dont la collection est rangée.
En Java,
Iterator<E>a trois méthodes :hasNext(),next()etremove(). Le même code parcourt une liste, un ensemble ou les clés d'un dictionnaire.Que produit ce programme ?
```java
Iterator<Integer> it = List.of(1, 2, 3).iterator();
while (it.hasNext()) {
System.out.println(it.next() + " " + it.next());
}`- Il affiche
1 2puis s'arrête surNoSuchElementException - Il affiche
1 2puis3 3au second tour de la boucle - Il affiche
1 2puis3 nullau second tour de la boucle - Il affiche
1 2puis s'arrête normalement, la boucle finie sans erreur
Voir la réponse
Il affiche
1 2puis s'arrête surNoSuchElementExceptionhasNext()n'est vérifié qu'une fois par tour, mais le corps appellenext()deux fois. Au second tour il reste le 3 : le premiernext()le lit, le second n'a plus rien à donner.- Il affiche
Un itérateur se pilote avec … pour savoir s'il reste un élément, et … pour le lire et avancer.
Voir la réponse
Un itérateur se pilote avec hasNext pour savoir s'il reste un élément, et next pour le lire et avancer.
On appelle
hasNext()avant chaquenext(). Appelernext()quand il ne reste rien lèveNoSuchElementException.Iterable : de quoi s'agit-il ?
Voir la réponse
Interface Java des objets capables de fournir un itérateur : une seule méthode,
iterator().ListetSetl'implémentent ;Mapnon, d'où l'erreur « for-each not applicable to expression type » surfor (String k : map). Une classe à nous qui l'implémente peut s'utiliser dans une boucle pour chaque.Retirer les valeurs négatives avec un itérateur : quelle étape vient après « Obtenir l'itérateur de la liste » ?
- Lire l'élément courant avec next()
- Comparer cet élément à 0
- Tester hasNext() pour savoir s'il reste un élément
- Appeler remove() sur l'itérateur si l'élément est négatif
Voir la réponse
Tester hasNext() pour savoir s'il reste un élément
Le
next()doit précéder leremove(), qui retire l'élément quenext()vient de renvoyer. Le testhasNext()ouvre chaque tour et protège contreNoSuchElementException.