programmation Java (école d'ingénieur) · Chapitre 10 · Exercice de TD
Une troisième pile
Classes abstraites et interfaces · niveau 2
Énoncé
Écrire une classe PileListe qui implémente l'interface Pile du cours en rangeant ses éléments dans une ArrayList<Integer>. Vérifier qu'elle se comporte comme les deux autres avec la méthode remplirEtVider du cours, sans modifier celle-ci. Quel avantage a-t-elle sur PileTableau ?
Corrigé
class PileListe implements Pile {
private final ArrayList<Integer> elements = new ArrayList<>();
@Override public void empiler(int x) { elements.add(x); }
@Override public int depiler() { return elements.remove(elements.size() - 1); }
@Override public boolean estVide() { return elements.isEmpty(); }
}
remplirEtVider("liste", new PileListe()) affiche liste : 25 16 9 4 1, comme les deux autres piles. Son avantage sur PileTableau : elle n'a pas de capacité maximale, l'ArrayList s'agrandissant toute seule, alors qu'empiler un onzième élément dans une PileTableau(10) provoque une ArrayIndexOutOfBoundsException. Remarquer que c'est une composition (la pile a une liste, chapitre 9), et non un héritage.
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours, le premier QCM et 2 minutes de podcast et de vidéo. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.