Queue、Deque和Stack

Queue队列接口

public interface Queue<E> extends Collection<E

在尾部添加元素 (add, offer):

add(e) 会在长度不够时抛出异常:IllegalStateException;  

offer(e) 只返回false


删除头部元素 (remove, poll),返回头部元素,并且从队列中删除

remove() 会在没元素时抛出异常:NoSuchElementException;  

poll() 返回null; 


查看头部元素 (element, peek),返回头部元素,但不改变队列

element()会在没元素时抛出异常:NoSuchElementException; 

peek() 返回null;

//代码实现队列
//列用Queue实现队列(LinkedList)
Queue queue = new LinkedList();
queue.offer("1");
queue.offer("2");
queue.offer("3");
while (queue.peek() != null){
    System.out.println(queue.poll());
}
//利用Queue实现队列(ArrayDeque)
Queue queue2 = new ArrayDeque();
queue2.offer("1");
queue2.offer("2");
queue2.offer("3");
while (queue2.peek() != null){
    System.out.println(queue2.poll());
}

************************************************************************************

Deque双端队列接口

Deque接口是Queue接口的子接口,它代表一个双端队列,该队列允许从两端来操作队列中的元素。Deque不仅可以当成双端队列使用,而且可以当成栈来使用。

public interface Deque<E> extends Queue<E


插入方法:

addFirst(e)

addLast(e)

offerFirst(e)

offerLast(e)

删除方法:

removeFirst()

removeLast()

pollFirst()

pollLast()

查看元素

getFirst()

getLast()

peekFirst()

peekLast()

removeFirstOccurrence(e):删除第一个出现的指定元素

removeLastOccurrence(e):删除最后出现的指定元素

//利用Deque双端队列实现(LinkedList)
Deque deque = new LinkedList();
deque.offerLast("1");
deque.offerLast("2");
deque.offerLast("3");
while (deque.peekFirst() != null){
    System.out.println(deque.pollFirst());
}
//利用Deque双端队列实现(ArrayDeque)
Deque deque2 = new ArrayDeque();
deque2.offerLast("1");
deque2.offerLast("2");
deque2.offerLast("3");
while (deque2.peekFirst() != null){
    System.out.println(deque2.pollFirst());
}

************************************************************************************

Stack(通过Deque实现)

push(e):push表示入栈,在头部添加元素,栈的空间可能是有限的,如果栈满了,push会抛出异常IllegalStateException。

pop():pop表示出栈,返回头部元素,并且从栈中删除,如果栈为空,会抛出异常NoSuchElementException。

peek():peek查看栈头部元素,不修改栈,如果栈为空,返回null。


//利用Deque实现栈(LinkedList)
Deque stack = new LinkedList();
stack.push("1");
stack.push("2");
stack.push("3");
while (stack.peek() != null){
    System.out.println(stack.pop());
}
//利用Deque实现栈(ArrayDeque)
Deque stack2 = new ArrayDeque();
stack2.push("1");
stack2.push("2");
stack2.push("3");
while (stack2.peek() != null){
    System.out.println(stack2.pop());
}

************************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值