但是看到构造函数中可以指定数组的长度,既然可以指定数组的长度,那这里指定数组长度为10,这个数字也不是2的幂次方啊,其实我们指定的虽然不是2的幂次方,但是ArrayDeque内部会帮我进行调整,调整数组长度为2的幂次方,先看一下ArrarDeque的构造函数:
* Constructs an empty array deque with an initial capacity * sufficient to hold 16 elements. * 构造一个有初始化容量的空array deque,能容纳16个元素,+1应该是为了留一个给tail来做入队操作。 */ public ArrayDeque() { elements = new Object[16 + 1]; } eg: Deque<Integer> deque=new ArrayDeque<...
ArrayDeque不支持存储null元素。 LinkedBlockingDeque类 LinkedBlockingDeque实现了BlockingDeque接口,是一个由链表支持的可选有界双端阻塞队列。此队列的可选容量,在创建时可指定,如果不指定,则默认为Integer.MAX_VALUE。LinkedBlockingDeque中的阻塞方法遵循BlockingDeque接口的定义,执行插入、移除和获取操作时,如果无法立即执行...
importjava.util.ArrayDeque;importjava.util.Deque;publicclassExample{publicstaticvoidmain(String[]args){Deque<Integer>deque=newArrayDeque<>();deque.addFirst(1);deque.addLast(2);intfirst=deque.removeFirst();intlast=deque.removeLast();System.out.println("First: "+first+", Last: "+last);}} Java...
ArrayDeque<Integer> arrayDeque = new ArrayDeque<>(10);arrayDeque.addFirst(5); 此时初始化时数组长度为16,头指针head和尾指针head默认是0,此时数组的内容如下所示: 现在来找执行addFirst操作后的head位置: 初始head = 0, head -1 = -1, 对应的补码是11111111 ...
public void addLast(E e) { if (e == null) throw new NullPointerException(); elements[tail] = e; if ( (tail = (tail + 1) & (elements.length - 1)) == head) doubleCapacity(); } 代码语言:javascript 代码运行次数:0 运行 AI代码解释 ArrayDeque<Integer> deque = new ArrayDeque<>(7)...
ArrayDeque是一个实现了Deque接口,并且可调整大小的一个双向队列。ArrayDeque队列没有容量限制,它可以根据需要扩容。 ArrayDeque底层采用数组实现的。 ArrayDeque特性: ArrayDeque是一个可扩容的双端队列。 内部使用数组存储数据。 ArrayDeque不是线程安全的。 ArrayDeque禁止使用空元素。
importjava.util.ArrayDeque;publicclassArrayDequeExample{publicstaticvoidmain(String[]args){ArrayDeque<Integer>deque=newArrayDeque<>();// 添加元素deque.addFirst(1);deque.addLast(2);deque.addFirst(0);// 获取并打印头部元素IntegerfirstElement=deque.peekFirst();System.out.println("First Element: "+firs...
public void test() { ArrayDeque<Integer> deque = new ArrayDeque<>(); deque.addLast(100); System.out.println(deque); deque.addFirst(55); System.out.println(deque); deque.addLast(-55); System.out.println(deque); deque.removeFirst(); System.out.println(deque); deque.removeLast(); System....
ArrayDeque 是 Deque 接口的一种具体实现,是依赖于可变数组来实现的。ArrayDeque 没有容量限制,可根据需求自动进行扩容。ArrayDeque不支持值为 null 的元素。 下面基于JDK 8中的实现对 ArrayDeque 加以分析。 方法概览 publicinterfaceQueue<E>extendsCollection<E> {//向队列中插入一个元素,并返回true//如果队列已满...