Vector繼承自Vector颠锉,Stack是棧己儒。它的特性是:先進后出(FILO, First In Last Out)记焊。
它常用的API如下:
boolean empty()
synchronized E peek()
synchronized E pop()
E push(E object)
synchronized int search(Object o)
1.入棧操作
public E push(E item) {
addElement(item); // 調(diào)用父類的方法 芳杏,在最后 一個位置添加
return item;
}
2.出棧操作
public synchronized E pop() {
E obj;
int len = size();
obj = peek(); // 拿到最后一個對象 。
removeElementAt(len - 1); // 移除最后一個對象 抡柿。
return obj;
}
public synchronized E peek() {
int len = size();
if (len == 0)
throw new EmptyStackException();
return elementAt(len - 1);
}
3.search其實就是和父類的lastIndexOf 方法 舔琅。
public synchronized int search(Object o) {
int i = lastIndexOf(o);
if (i >= 0) {
return size() - i;
}
return -1;
}
總結(jié):
(01) Stack實際上也是通過數(shù)組去實現(xiàn)的。
執(zhí)行push時(即沙绝,將元素推入棧中)搏明,是通過將元素追加的數(shù)組的末尾中鼠锈。
執(zhí)行peek時(即闪檬,取出棧頂元素,不執(zhí)行刪除)购笆,是返回數(shù)組末尾的元素粗悯。
執(zhí)行pop時(即,取出棧頂元素同欠,并將該元素從棧中刪除)样傍,是取出數(shù)組末尾的元素,然后將該元素從數(shù)組中刪除铺遂。
(02) Stack繼承于Vector衫哥,意味著Vector擁有的屬性和功能,Stack都擁有襟锐。