java – ArrayDqueue类的add(E e)和offer(E e)之间的区别
作者:互联网
嗨,我使用添加和提供添加我的元素在最后的步伐.
两者都返回布尔值,两者都不会抛出除NPE之外的任何异常.
public class ArrayDequeDemo {
public static void main(String[] args) {
// Create ArrayDeque elements.
ArrayDeque<Integer> deque = new ArrayDeque<>();
deque.add(10);
deque.offer(30);
}
}
两者都会通过返回布尔值在最后的位置添加元素.
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(…)只返回false.
但是,java.util.ArrayDequeue没有实现任何容量限制,因此不会出现这种情况,因此区别不适用.
标签:deque,java,arraydeque 来源: https://codeday.me/bug/20190725/1528418.html