gpt4 book ai didi

java - 为什么我们在 Deque 中有 offer(E e) 和 offerLast(E e) 方法,即使它们解决的是相同的目的

转载 作者:行者123 更新时间:2023-11-29 04:20:40 27 4
gpt4 key购买 nike

我试图理解,为什么我们需要 Deque 中的 OfferOfferLast 方法,因为这两种方法都在Deque 的结尾/尾部。它有什么意义?

最佳答案

Queue 接口(interface)是在Java 5 中添加的。它定义了offer。方法,在末尾添加一个元素。

(offer 方法和 add 方法都返回 boolean 值。它们的区别在于 add 允许拒绝该元素并仅在该元素是时才返回 false已经存在于集合中。offer 方法可以因为其他原因拒绝该元素,例如队列已满。)

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

Deque接口(interface)是在 Java 6 中添加的。双端队列允许在头部和尾部添加和删除元素,因此 Deque 定义了 offerFirstofferLast 方法。 deque 也是一个队列,所以 DequeQueue 的子接口(interface)。因此它继承了 Queueoffer 方法。这就是 DequeofferofferLast 结束的方式。

我们或许可以在不添加 offerLast 的情况下解决问题,但这会在 Deque 接口(interface)中留下不对称性。许多操作同时作用于头部和尾部(add、get、offer、peek、poll、remove)所以它们都具有 -first 和 -last 变体是有意义的,即使这增加了冗余。这种冗余也出现在其他 Queue 方法中,例如 addaddLastpeekpeekFirst pollpollFirst,以及 removeremoveFirst

关于java - 为什么我们在 Deque 中有 offer(E e) 和 offerLast(E e) 方法,即使它们解决的是相同的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425410/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com