Stack:
public class Stack<T> {
private static final int DEFAULT_SIZE = 5;
// 主数据结构
private Object elementObject[];
// 当前的位置
private int index;
// 数组大小
private int size;
private static final int capacity = 10;
public Stack() {
this(DEFAULT_SIZE);
}
public Stack(int size) {
if (size <= 0)
throw new IllegalArgumentException("Init Array Capacity Size Limit Greater than Zero With:" + size);
elementObject = new Object[size];
index = 0;
}
public T push(T e) {
ensureCapacity(size + 1);
elementObject[index++] = (Object) e;
size++;
return e;
}
public T pop() {
return (T) elementObject[--index];
}
public int size() {
return size;
}
public boolean isEmplty() {
return false;
}
public void clear() {
}
public String toString() {
return Arrays.toString(elementObject) + "index:= " + index + " size:= " + size;
}
private void ensureCapacity(int minCapacity) {
int oldCapacity = elementObject.length;
if (minCapacity < oldCapacity) {
int newCapacity = (oldCapacity * 3) / 2 + 1;
if (newCapacity < minCapacity)
newCapacity = minCapacity;
elementObject = Arrays.copyOf(elementObject, newCapacity);
}
}
public static void main(String[] args) {
Stack<String> stack = new Stack<String>();
for (String s : "A B C D E F".split(" ")) {
stack.push(s);
}
for (int i = 0; i < stack.size(); i++) {
System.out.println(stack.pop());
}
}