有关Stack类

在jdk中有一个Stack类,翻译过来就是我们常说的栈。

这个类继承自Vector类,也算是一种集合、一种容器。Stack类中存放的也是对象。


 

当我们对数据要进行栈操作的时候,可以考虑使用这个类。Stack使用起来也非常简单,直接new就可以。

 

Stack<T>  stack  =  new  Stack<T>;

 

在Stack类中,除去继承自父类的方法,还有几个自己的方法:

empty()   判断该栈是否为空,是则返回true,否返回false

peek()     取出栈顶的对象,但并不从栈中移除,就是说我只是把栈顶的对象拿出来看看,它改在栈里还是放在栈里

pop()    这个方法与peek()非常像,也是取出栈顶的对象,不同的是,这个取出来就是真的取出来了,栈顶的对象也会从栈里移除。

push(E item)   从栈顶压入对象。

search(Object  o)返回对象o在栈中的位置,以1为基数。

 

注意:当想要判断栈是不是为空的时候,一定不能用null判断,而是要用方法empty()判断

Eg:if(stack.empty){

      Do something…..

}

的区别是什么?为什么在Java Doc中建议使用Deque接口替代Stack完成栈的功能? 回答: Stack和Deque都可以用来实现栈的功能,但它们有一些区别。首先,在Java Doc中建议使用Deque接口替代Stack完成栈的功能,是因为Stack是继承自Vector的,而Vector是由数组实现的线程安全集合,它包含了大量集合处理的方法。由于Stack复用了Vector的方法实现进栈和出栈的操作,这导致了Stack的效率相对较低。相比之下,Deque接口提供了更完整和一致的LIFO(后进先出)栈操作,并且可以有多种实现方式。在Java Doc中明确建议使用Deque接口及其实现来替代Stack。 另外,Deque接口还可以用作LIFO栈,当将Deque用作栈时,元素从Deque的开头进行推入和弹出操作。相比之下,Stack的进栈和出栈操作是从Vector的末尾进行的。 综上所述,Java Doc中建议使用Deque接口替代Stack完成栈的功能,是因为Deque接口提供了更完整、一致且效率更高的LIFO栈操作,并且可以有多种实现方式。 #### 引用[.reference_title] - *1* *3* [Java中Stack和Deque的比较](https://blog.csdn.net/wdy00000/article/details/123917628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Java容器之Stack和Deque](https://blog.csdn.net/weixin_40096160/article/details/120772876)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值