化妆品网站建设推广方案,大连市营商环境建设局网站,网站ps多大尺寸,自助建站哪个网站好一、Queue和Deque异同介绍
我们知道#xff0c;Queue是队列#xff0c;只能一头进#xff0c;另一头出。
如果把条件放松一下#xff0c;允许两头都进#xff0c;两头都出#xff0c;这种队列叫双端队列#xff08;Double Ended Queue#xff09;#xff0c;学名Deq…一、Queue和Deque异同介绍
我们知道Queue是队列只能一头进另一头出。
如果把条件放松一下允许两头都进两头都出这种队列叫双端队列Double Ended Queue学名Deque。
Java集合提供了接口Deque来实现一个双端队列它的功能是
既可以添加到队尾也可以添加到队首 既可以从队首获取又可以从队尾获取。 首先我们比较下Queue和Deque出队和入队的方法
QueueDeque添加元素到队尾add(E e) / offer(E e)addLast(E e) / offerLast(E e)取队首元素并删除E remove() / E poll()E removeFirst() / E pollFirst()取队首元素但不删除E element() / E peek()E getFirst() / E peekFirst()添加元素到队首无addFirst(E e) / offerFirst(E e)取队尾元素并删除无E removeLast() / E pollLast()取队尾元素但不删除无E getLast() / E peekLast()
注这里解释先为什么Queue或者Deque都有两种方法它们有什么区别
1、add()和offer()区别:
add()和offer()都是向队列中添加一个元素。一些队列有大小限制因此如果想在一个满的队列中加入一个新项调用 add() 方法就会抛出一个 unchecked 异常而调用 offer() 方法会返回 false。因此就可以在程序中进行有效的判断
2、poll()和remove()区别
remove() 和 poll() 方法都是从队列中删除第一个元素。如果队列元素为空调用remove() 的行为与 Collection 接口的版本相似会抛出异常但是新的 poll() 方法在用空集合调用时只是返回 null。因此新的方法更适合容易出现异常条件的情况。
3、element() 和 peek()区别
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似在队列为空时 element() 抛出一个异常而 peek() 返回 null。
上面介绍的是Queue的两中方法Deque也是相同的就不介绍了。
二、Deque作为队列和堆栈的介绍
我们知道Queue的数据结构是一个队列即FIFO(先进先出)。从队尾添加元素从对头删除元素。Deque也有等效的方法作为一个FIFO队列具体方法如下
Queue 方法等效 Deque 方法add(e)addLast(e)offer(e)offerLast(e)remove()removeFirst()poll()pollFirst()element()getFirst()peek()peekFirst()
Deque(双端队列)也可以用作LIFO后进先出堆栈也就是栈应优先使用此接口而不是遗留 Stack类。在将双端队列用作堆栈时元素被推入双端队列的开头并从双端队列开头弹出。堆栈方法完全等效于Deque 方法如下表所示
堆栈方法等效 Deque 方法push(e)addFirst(e)pop()removeFirst()peek()peekFirst()
总结
1、Queue只能从队尾插入从对头删除。
2、Deque对头队尾都可以进行插入和删除。
3、Deque根据不同的插入和删除方法可以实现队列和堆栈也就是栈这两种数据结构。