gpt4 book ai didi

java - ArrayDqueue类的add(E e)和offer(E e)的区别

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:54 28 4
gpt4 key购买 nike

您好,我在最后一步使用了 add 和 offer 来添加我的元素。两者都返回 boolean 值,并且除了 NPE 之外都不会抛出任何异常。

 public class ArrayDequeDemo {

public static void main(String[] args) {


// Create ArrayDeque elements.
ArrayDeque<Integer> deque = new ArrayDeque<>();
deque.add(10);
deque.offer(30);

}
}

两者都会通过返回 boolean 值在最后位置添加元素。

Java 实现

//For Add and Offer Both
public void addLast(E e) {
if (e == null)
throw new NullPointerException();
elements[tail] = e;
if ( (tail = (tail + 1) & (elements.length - 1)) == head)
doubleCapacity();
}

最佳答案

这两种方法是等价的。

它们都存在的原因是 the java.util.Queue interface指定两者。

java.util.Queue指定两者的原因是允许java.util.Queue的实现实现容量限制,指定这两种方法在添加元素会违反该限制的情况下表现不同;具体来说,add(...) 被指定为在这种情况下抛出 IllegalStateException,而 offer(...) 只是返回 假的

java.util.ArrayDeque,但是没有实现任何容量限制,所以不会出现这种情况,所以区别不适用。

关于java - ArrayDqueue类的add(E e)和offer(E e)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29092043/

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