Stack 继承自 Vector, 的 push 方法如下:
public E push(E item) {
addElement(item);
return item;
}public synchronized void addElement(E obj) {
modCount++;
ensureCapacityHelper(elementCount + 1);
elementData[elementCount++] = obj;
}private void ensureCapacityHelper(int minCapacity) {
// overflow-conscious code
if (minCapacity - elementData.length > 0)
grow(minCapacity);
}
直接写总结:
1. Stack 继承自 Vector,所以实现方法上,还是使用的数组。Stack 是同步的。
2. 他每次扩容的大小,是可以在构造方法里面制定的,代码如下:
public Vector(int initialCapacity, int capacityIncrement) {
super();
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal Capacity: "+
initialCapacity);
this.elementData = new Object[initialCapacity];
this.capacityIncrement = capacityIncrement;
}
3. push, pop, empty, peek 复杂度都是 O(1), search 复杂度是 O(n).
参考链接:
1. https://docs.oracle.com/javase/8/docs/api/java/util/Stack.html