- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解,为什么我们需要 Deque
中的 Offer
和 OfferLast
方法,因为这两种方法都在Deque
的结尾/尾部。它有什么意义?
最佳答案
Queue 接口(interface)是在Java 5 中添加的。它定义了offer
。方法,在末尾添加一个元素。
(offer
方法和 add
方法都返回 boolean 值。它们的区别在于 add
允许拒绝该元素并仅在该元素是时才返回 false已经存在于集合中。offer
方法可以因为其他原因拒绝该元素,例如队列已满。)
有了 Queue.offer
,语义上几乎没有问题,因为元素通常被添加到队列的尾部并从头部移除。
Deque接口(interface)是在 Java 6 中添加的。双端队列允许在头部和尾部添加和删除元素,因此 Deque
定义了 offerFirst
和offerLast
方法。 deque 也是一个队列,所以 Deque
是 Queue
的子接口(interface)。因此它继承了 Queue
的 offer
方法。这就是 Deque
以 offer
和 offerLast
结束的方式。
我们或许可以在不添加 offerLast
的情况下解决问题,但这会在 Deque
接口(interface)中留下不对称性。许多操作同时作用于头部和尾部(add、get、offer、peek、poll、remove)所以它们都具有 -first 和 -last 变体是有意义的,即使这增加了冗余。这种冗余也出现在其他 Queue
方法中,例如 add
和 addLast
、peek
和 peekFirst
、poll
和 pollFirst
,以及 remove
和 removeFirst
。
关于java - 为什么我们在 Deque 中有 offer(E e) 和 offerLast(E e) 方法,即使它们解决的是相同的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425410/
我试图理解,为什么我们需要 Deque 中的 Offer 和 OfferLast 方法,因为这两种方法都在Deque 的结尾/尾部。它有什么意义? 最佳答案 Queue 接口(interface)是在
我是一名优秀的程序员,十分优秀!