stack是一个后进先出的堆栈,在Vector类的基础上扩展5个方法而来
depue(双端队列)比起stack具有更好的完整性和一致性,应该被优先使用
E push(E item):把项压入堆栈顶部。
E pop():移除堆栈顶部的对象,并作为此函数的值返回该对象。
E peek():查看堆栈顶部的对象,但不从堆栈中移除它。
boolean empty():测试堆栈是否为空。
int search(Object o):返回对象在堆栈中的位置,以 1 为基数。
Stack本身通过扩展Vector而来,而Vector本身是一个可增长的对象数组( a growable array of objects)那么这个数组的哪里作为Stack的栈顶,哪里作为Stack的栈底?
答案只能从源代码中寻找,jdk1.6:
案列:
构造方法 : public Stack() 创建一个空 Stack。
方法:
1. public push (item ) 把项 压入栈顶。其作用与 addElement (item ) 相同。
参数 item 压入栈顶的项 。 返回: item 参数 ;
2. public pop () 移除栈顶对象,并作为函数的值 返回该对象。
返回:栈顶对象(Vector 对象的中的最后一项)
抛出异常 : EmptyStackException 如果堆栈式空的
3. public peek() 查看栈顶对象而不移除它。
返回:栈顶对象(Vector 对象的中的最后一项)
抛出异常 : EmptyStackException 如果堆栈式空的
4. public boolean empty (测试堆栈是否为空。) 当且仅当堆栈中不含任何项时 返回 true,否则 返回 false。
5. public int search (object o) 返回对象在堆栈中位置,以 1 为基数, 如果对象 o是栈中的一项,该方法返回距离,栈顶最近的出现位置到栈顶的距离;栈中最上端项的距离为1,使用equals 方法比较 o 与 堆栈中的项