Java 双端队列

由于 Deque 是一个双端队列,它既可以作为队列使用(遵循 FIFO 先进先出原则),也可以作为栈使用(遵循 LIFO 后进先出原则)

Deque 接口提供了栈的所有操作,并且其实现类(如ArrayDeque)通常比 Stack 类具有更好的性能(Stack 类中的一些方法已经过时)。

Deque<String> stack = new ArrayDeque<>();  
          
// 压栈操作  
stack.push("元素1");  
stack.push("元素2");  
stack.push("元素3");  
  
// 查看栈顶元素  
System.out.println("栈顶元素: " + stack.peek());  
  
// 弹栈操作  
String topElement = stack.pop();  
System.out.println("弹栈元素: " + topElement);  
  
// 判断栈是否为空  
System.out.println("栈是否为空: " + stack.isEmpty()); 

Deque 还可以作为队列使用,相关的方法有(假设 Deque 对象为 deque):

  • deque.offerFirst(E e):将指定元素插入到队列开头。若队列已满,返回 false。

  • deque.offerLast(E e):将指定元素插入到队列末尾。若队列已满,返回 false。

  • deque.pollFirst():移除并返回双端队列的第一个元素,若队列为空,返回 null。

  • deque.pollLast():移除并返回队列的最后一个元素,若队列为空,返回 null。

  • deque.peekFirst():返回队列的第一个元素,若队列为空,返回 null。

  • deque.peekLast():返回此队列的最后一个元素,若队列为空,返回 null。

  • deque.clear():清空双端队列。

  • deque.contains(Object o):如果队列包含指定元素,返回 true。

  • deque.size():返回队列的长度

deque 的 add、push、offerFirst、offerLast 方法有什么不同?

  • add 方法:在队尾添加元素。若成功返回 true;若队列已满且无法添加更多元素则抛出 IllegalStateException。
  • push 方法:将元素添加到队头。push 方法不返回任何值,但如果队列已满且无法添加元素,它将抛出IllegalStateException。在语义上,push方法更适用于实现栈的行为。
  • offerFirst 方法:将元素添加到队头。若成功返回 true;若队列已满且无法添加元素,返回 false。
  • offerLast 方法:将元素添加到队尾。成功返回 true;如果队列已满且无法添加元素返回 false。
  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值