package com.ace.coding; public class Stack { private ArrayList elementData = new ArrayList(); private int size = 0; public void push(Object o){ elementData.add(o); size++; } public Object pop(){ checkStack(); Object obj = elementData.remove(size()-1); size--; return obj; } public Object peek(){ checkStack(); return elementData.get(size()-1); } private void checkStack(){ if(isEmpty()){ throw new IndexOutOfBoundsException("This stack is empty"); } } public boolean isEmpty(){ return size == 0; } public int size(){ return size; } }