java stack 数据类型_数据结构——Java Stack 类

本文介绍了Java中Stack类,它代表后进先出(LIFO)的对象栈,继承自Vector类。提供了push、pop、peek等操作,还能测试栈是否为空、搜索栈中元素位置。不过更推荐使用Deque接口及其实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packagejava.util;/*** The Stack class represents a last-in-first-out

* (LIFO) stack of objects. It extends class Vector with five

* operations that allow a vector to be treated as a stack. The usual

* push and pop operations are provided, as well as a

* method to peek at the top item on the stack, a method to test

* for whether the stack is empty, and a method to search

* the stack for an item and discover how far it is from the top.

*

* When a stack is first created, it contains no items.

*

*

A more complete and consistent set of LIFO stack operations is

* provided by the {@linkDeque} interface and its implementations, which

* should be used in preference to this class. For example:

*

   {@code*   Deque stack = new ArrayDeque();}

*

*@authorJonathan Payne

*@sinceJDK1.0*/

public

class Stack extends Vector{/*** Creates an empty Stack.*/

publicStack() {

}/*** Pushes an item onto the top of this stack. This has exactly

* the same effect as:

*

 
  

* addElement(item)

*

*@paramitem the item to be pushed onto this stack.

*@returnthe item argument.

*@seejava.util.Vector#addElement*/

publicE push(E item) {

addElement(item);returnitem;

}/*** Removes the object at the top of this stack and returns that

* object as the value of this function.

*

*@returnThe object at the top of this stack (the last item

* of the Vector object).

*@throwsEmptyStackException if this stack is empty.*/

public synchronizedE pop() {

E obj;int len =size();

obj=peek();

removeElementAt(len- 1);returnobj;

}/*** Looks at the object at the top of this stack without removing it

* from the stack.

*

*@returnthe object at the top of this stack (the last item

* of the Vector object).

*@throwsEmptyStackException if this stack is empty.*/

public synchronizedE peek() {int len =size();if (len == 0)throw newEmptyStackException();return elementAt(len - 1);

}/*** Tests if this stack is empty.

*

*@returntrue if and only if this stack contains

* no items; false otherwise.*/

public booleanempty() {return size() == 0;

}/*** Returns the 1-based position where an object is on this stack.

* If the object o occurs as an item in this stack, this

* method returns the distance from the top of the stack of the

* occurrence nearest the top of the stack; the topmost item on the

* stack is considered to be at distance 1. The equals

* method is used to compare o to the

* items in this stack.

*

*@paramo the desired object.

*@returnthe 1-based position from the top of the stack where

* the object is located; the return value -1

* indicates that the object is not on the stack.*/

public synchronized intsearch(Object o) {int i =lastIndexOf(o);if (i >= 0) {return size() -i;

}return -1;

}/**use serialVersionUID from JDK 1.0.2 for interoperability*/

private static final long serialVersionUID = 1224463164541339165L;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值