为什么我们在Deque中提供(E e)和offer(E e)方法,即使它们解决了相同的目的

时间:2018-03-22 09:50:45

标签: java collections java-6 deque

我想了解,为什么我们需要Offer中的OfferLastDeque方法,因为这两种方法都会在{{1}的末尾添加元素}。它有什么意义?

2 个答案:

答案 0 :(得分:2)

在Java 5中添加了Queue接口。它定义了offer方法,该方法在最后添加了一个元素。

offer方法和add方法都返回布尔值。它们的不同之处在于add被允许拒绝该元素,并且仅当元素已存在于该元素中时才返回false offer方法可以出于其他原因拒绝该元素,例如队列已满。)

对于Queue.offer,几乎没有关于语义的问题,因为元素通常被添加到队列的尾部并从头部移除。

在Java 6中添加了Deque接口.deque允许将元素添加到两者的头部和尾部,因此Deque定义{{1} }和offerFirst方法。 deque也是一个队列,因此offerLastDeque的子接口。因此,它继承了Queue中的offer方法。这就是QueueDequeoffer结合的方式。

我们可能在没有添加offerLast的情况下得到了,但这会在offerLast接口中留下不对称。许多操作都在头部和尾部工作(添加,获取,提供,查看,轮询,删除),因此所有人都有-first和-last变体是有意义的,即使这会增加冗余。此冗余也会与其他Deque方法一起发生,例如QueueaddaddLastpeekpeekFirst和{{1} },pollpollFirst

答案 1 :(得分:0)

因此,您可以将同一个对象用作队列和双端队列。