stack通过五个操作对vector进行扩展,允许将向量视为堆栈。这个五个操作如下:
操作 说明
empty()
测试堆栈是否为空。
peek()
查看堆栈顶部的对象,但不从堆栈中移除它。
pop()
移除堆栈顶部的对象,并作为此函数的值返回该对象。
push(e item)
把项压入堆栈顶部。
search(object o)
返回对象在堆栈中的位置,以 1 为基数。
stack继承vector,他对vector进行了简单的扩展:
public class stack<e> extends vector<e>
stack的实现非常简单,仅有一个构造方法,五个实现方法(从vector继承而来的方法不算与其中),同时其实现的源码非常简单
/** * 构造函数 */ public stack() { } /** * push函数:将元素存入栈顶 */ public e push(e item) { // 将元素存入栈顶。 // addelement()的实现在vector.java中 addelement(item); return item; } /** * pop函数:返回栈顶元素,并将其从栈中删除 */ public synchronized e pop() { e obj; int len = size(); obj = peek(); // 删除栈顶元素,removeelementat()的实现在vector.java中 removeelementat(len - 1); return obj; } /** * peek函数:返回栈顶元素,不执行删除操作 */ public synchronized e peek() { int len = size(); if (len == 0) throw new emptystackexception(); // 返回栈顶元素,elementat()具体实现在vector.java中 return elementat(len - 1); } /** * 栈是否为空 */ public boolean empty() { return size() == 0; } /** * 查找“元素o”在栈中的位置:由栈底向栈顶方向数 */ public synchronized int search(object o) { // 获取元素索引,elementat()具体实现在vector.java中 int i = lastindexof(o); if (i >= 0) { return size() - i; } return -1; }
以上就是java提高篇(三一)-----stack 的内容。
