1  public class GenericStack<E> {
  2    private java.util.ArrayList<E> list = new java.util.ArrayList<>();
  3  
  4    public int getSize() {
  5      return list.size();
  6    }
  7  
  8    public E peek() {
  9      return list.get(getSize() - 1);
 10    }
 11  
 12    public void push(E o) {
 13      list.add(o);
 14    }
 15  
 16    public E pop() {
 17      E o = list.get(getSize() - 1);
 18      list.remove(getSize() - 1);
 19      return o;
 20    }
 21  
 22    public boolean isEmpty() {
 23      return list.isEmpty();
 24    }
 25    
 26    @Override
 27    public String toString() {
 28      return "stack: " + list.toString();
 29    }
 30  }