Java 为什么我们在Deque中有offer(EE)和offerLast(EE)方法,尽管它们解决了相同的问题

Java 为什么我们在Deque中有offer(EE)和offerLast(EE)方法,尽管它们解决了相同的问题,java,collections,java-6,deque,Java,Collections,Java 6,Deque,我试图理解,为什么我们需要Deque中的Offer和OfferLast方法,因为这两种方法都在Deque的末尾添加元素。它的意义是什么?因此您可以将同一对象同时用作队列和队列。因此您可以将同一对象同时用作队列和队列。队列接口是在Java 5中添加的。它定义了方法,该方法在末尾添加一个元素 (offer方法和方法都返回布尔值。它们的不同之处在于add允许拒绝元素,并且仅当元素已存在于集合中时才返回false。offer方法可以出于其他原因拒绝元素,例如队列已满。) 对于Queue.offer,语义

我试图理解,为什么我们需要
Deque
中的
Offer
OfferLast
方法,因为这两种方法都在
Deque
的末尾添加元素。它的意义是什么?

因此您可以将同一对象同时用作队列和队列。

因此您可以将同一对象同时用作队列和队列。

队列接口是在Java 5中添加的。它定义了方法,该方法在末尾添加一个元素

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

对于
Queue.offer
,语义上没有什么问题,因为元素通常添加到队列的尾部,并从队列的头部移除

该接口是在Java6中添加的。deque允许在头部和尾部添加和删除元素,因此
deque
定义
offerFirst
offerLast
方法。deque也是一个队列,因此
deque
queue
的子接口。因此,它从
队列
继承了
提供
方法。这就是
Deque
如何以
offer
offerLast
结束的


我们可能不需要添加
offerLast
,但这会在
Deque
接口中留下不对称。许多操作同时作用于头部和尾部(添加、获取、提供、查看、轮询、删除),因此所有这些操作都具有首个和最后一个变体是有意义的,尽管这增加了冗余。其他
队列
方法也会出现这种冗余,例如
add
addLast
peek
peekFirst
poll
pollFirst
,以及
removeFirst
队列接口是在Java5中添加的。它定义了方法,该方法在末尾添加一个元素

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

对于
Queue.offer
,语义上没有什么问题,因为元素通常添加到队列的尾部,并从队列的头部移除

该接口是在Java6中添加的。deque允许在头部和尾部添加和删除元素,因此
deque
定义
offerFirst
offerLast
方法。deque也是一个队列,因此
deque
queue
的子接口。因此,它从
队列
继承了
提供
方法。这就是
Deque
如何以
offer
offerLast
结束的


我们可能不需要添加
offerLast
,但这会在
Deque
接口中留下不对称。许多操作同时作用于头部和尾部(添加、获取、提供、查看、轮询、删除),因此所有这些操作都具有首个和最后一个变体是有意义的,尽管这增加了冗余。其他
队列
方法也会出现这种冗余,例如
add
addLast
peek
peekFirst
poll
pollFirst
,以及
removeFirst
,但随着Deque扩展队列,为什么我们不能使用队列中可用的相同方法?而且,offer方法依次调用OfferLast。公共布尔提供(E){returnofferlast(E);}这是一个接口设计问题,仅此而已。为了清楚起见,设计师更喜欢使用offerFirst()和offerLast(),而不是使用offerFirst()和offer()。但我的问题是,有一个方法叫做offerLast()和offer()。为什么我们两个都需要?您不需要它们,但是Deque类的设计者发现最好添加一个offerLast()方法,这样程序员就可以编写更易于阅读的代码。但是,由于Deque正在扩展队列,为什么我们不能使用队列中可用的相同方法呢?此外,offer方法依次调用offerLast。公共布尔提供(E){returnofferlast(E);}这是一个接口设计问题,仅此而已。为了清楚起见,设计师更喜欢使用offerFirst()和offerLast(),而不是使用offerFirst()和offer()。但我的问题是,有一个方法叫做offerLast()和offer()。为什么我们两者都需要?您不需要两者,但是Deque类的设计者发现最好添加一个offerLast()方法,这样程序员就可以编写更容易阅读的代码。