LinkedList实现栈、队列或者双端队列分析

LinkedList实现了Deque和Queue接口,可以按照队列、栈和双端队列的方式进行操作

一.Queue里面的方法,Queue扩展了Collection,它的主要操作有三个(每个操作2个方法,针对队列长度是否受限制对应是否抛异常---有些队列的是有长度限制的,本例的LinkedList实现queue没长度限制):

在尾部添加元素 (add, offer):
add()会在长度不够时抛出异常:IllegalStateException;  offer()则不会,只返回false
查看头部元素 (element, peek),返回头部元素,但不改变队列
element()会在没元素时抛出异常:NoSuchElementException;  peek()返回null;
删除头部元素 (remove, poll),返回头部元素,并且从队列中删除
remove()会在没元素时抛出异常:NoSuchElementException;  poll()返回null; 


代码实现队列demo
1.利用队列的接口的实现

2.用Deque双端队列接口(LinkedList也实现了这个接口)定义的方法来实现队列


二.Java中有一个类Stack,用于表示栈,但这个类已经过时了。Java中没有单独的栈接口,栈相关方法包括在了表示双端队列的接口Deque中,主要有三个方法:


push表示入栈,在头部添加元素,栈的空间可能是有限的,如果栈满了,push会抛出异常IllegalStateException。
pop表示出栈,返回头部元素,并且从栈中删除,如果栈为空,会抛出异常NoSuchElementException。
peek查看栈头部元素,不修改栈,如果栈为空,返回null。 

三.栈和队列只是双端队列的特殊情况,它们的方法都可以使用双端队列的方法替代,使用不同的名称和方法,概念上更为清晰。看看Deque接口里面的方法:

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值