我想了解,为什么我们需要Offer
中的OfferLast
和Deque
方法,因为这两种方法都会在{{1}的末尾添加元素}。它有什么意义?
答案 0 :(得分:2)
在Java 5中添加了Queue接口。它定义了offer
方法,该方法在最后添加了一个元素。
(offer
方法和add
方法都返回布尔值。它们的不同之处在于add
被允许拒绝该元素,并且仅当元素已存在于该元素中时才返回false offer
方法可以出于其他原因拒绝该元素,例如队列已满。)
对于Queue.offer
,几乎没有关于语义的问题,因为元素通常被添加到队列的尾部并从头部移除。
在Java 6中添加了Deque接口.deque允许将元素添加到两者的头部和尾部,因此Deque
定义{{1} }和offerFirst
方法。 deque也是一个队列,因此offerLast
是Deque
的子接口。因此,它继承了Queue
中的offer
方法。这就是Queue
与Deque
和offer
结合的方式。
我们可能在没有添加offerLast
的情况下得到了,但这会在offerLast
接口中留下不对称。许多操作都在头部和尾部工作(添加,获取,提供,查看,轮询,删除),因此所有人都有-first和-last变体是有意义的,即使这会增加冗余。此冗余也会与其他Deque
方法一起发生,例如Queue
和add
,addLast
和peek
,peekFirst
和{{1} },poll
和pollFirst
。
答案 1 :(得分:0)
因此,您可以将同一个对象用作队列和双端队列。