public class ObjectStack<T> {
public Object[] elementData;
public int elementCount;
public ObjectStack(int size) {
this.elementData = new Object[size];
elementCount = 0;
}
public void push(T item) {
elementData[elementCount++] = item;
}
@SuppressWarnings("unchecked")
public T pop() {
T obj = (T) elementData[elementCount - 1];
elementCount--;
return obj;
}
@SuppressWarnings("unchecked")
public T peek() {
return elementCount>0?(T)elementData[elementCount - 1]:null;
}
public void clear() {
elementCount = 0;
}
public int size() {
return elementCount;
}
@SuppressWarnings("unchecked")
public T get(int i) {
return (T) elementData[i];
}
public void copy(ObjectStack<T> srcStack) {
int cnt = srcStack.elementCount;
for(int i=0;i<cnt;i++)
elementData[i] = srcStack.elementData[i];
elementCount = cnt;
}
@Override
public String toString(){
StringBuffer sb = new StringBuffer();
for(int i=elementCount-1;i>=0;i--) {
sb.append(elementData[i]).append(" ");
}
return sb.toString();
}
}