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()方法,这样程序员就可以编写更容易阅读的代码。