public boolean isEmpty() { return newStack.isEmpty() && oldStack.isEmpty(); }
public T peek() { if (isEmpty()) throw new NoSuchElementException(); if (oldStack.isEmpty()) moveNewToOld(); return oldStack.peek(); }
private void moveNewToOld() { while (!newStack.isEmpty()) oldStack.push(newStack.pop()); }
public void add(T val) { newStack.push(val); }