package structures;
public interface Pile {
  boolean estVide();
  void empiler(Object o);
  Object sommet();
  Object dépiler();
}
Un objet de classe PileParListe a un champ privé de type List auquel toutes les opérations sur les piles seront déléguées :
package structures;
import java.util.List;
import java.util.ArrayList;
class PileParListe implements Pile {
  private List contenu;
  PileParListe() {
    contenu = new ArrayList(); 
  }
  public boolean estVide() {
    return contenu.isEmpty();
  }
  public void empiler(Object o) {
    contenu.add(o);
  }
  
  public Object sommet() {
      return contenu.get(contenu.size()-1);
  }
  public Object dépiler() {
      return contenu.remove(contenu.size()-1);
  } 
}