Adloun

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

Exercice suivant et tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →