Jok*_*ker 5 java deque arraydeque
嗨,我使用添加和提供添加我的元素在最后的步伐.两者都返回布尔值,两者都不会抛出除NPE之外的任何异常.
public class ArrayDequeDemo {
public static void main(String[] args) {
// Create ArrayDeque elements.
ArrayDeque<Integer> deque = new ArrayDeque<>();
deque.add(10);
deque.offer(30);
}
}
Run Code Online (Sandbox Code Playgroud)
两者都会通过返回布尔值在最后的位置添加元素.
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();
}
Run Code Online (Sandbox Code Playgroud)
rua*_*akh 10
这两种方法是等价的.
它们都存在的原因是,该java.util.Queue接口同时指定.
java.util.Queue指定两者的原因java.util.Queue是允许实现允许实现容量限制,并且指定两个方法在添加元素将违反该限制的情况下表现不同; 具体而言,add(...)指定抛出IllegalStateException那种情况,而offer(...)只是返回false.
java.util.ArrayDeque但是,没有实施任何容量限制,因此不会出现这种情况,因此区别不适用.
该Queue文档在解释差异方面做得相当好。
add(E e)如果无法将元素添加到队列中,则具有抛出异常的能力。如果队列已满,就会发生这种情况。
offer(E e)如果无法将值添加到队列中,则将返回一个特殊值(在本例中为布尔值)。如果您正在处理大小受限的队列但不想抛出异常,这将非常有用。
| 归档时间: |
|
| 查看次数: |
1670 次 |
| 最近记录: |