package com.coding.basic;
import java.util.Arrays;
public class Stack {
// private ArrayList elementData = new ArrayList();
private Object[] elementData = {};
private int size;
public enum CapaCityFlag {
ADD, SUB
}
public void push(Object o) {
addElement(o);
}
public Object pop() {
Object obj = elementData[--size];
grow(CapaCityFlag.SUB);
return obj;
}
public Object peek() {
// empty
return elementData[size - 1];
}
public boolean isEmpty() {
return size() == 0;
}
public int size() {
return size;
}
private void addElement(Object obj) {
grow(CapaCityFlag.ADD);
elementData[size++] = obj;
}
private void grow(CapaCityFlag capaCityFlag) {
int oldElementData = elementData.length;
if (CapaCityFlag.ADD.equals(capaCityFlag)) {
oldElementData++;
}
if (CapaCityFlag.SUB.equals(capaCityFlag)) {
oldElementData--;
}
elementData = Arrays.copyOf(elementData, oldElementData);
}
}