为什么我的网站百度搜不到,众v创业营网站建设,答题app制作教程,装修公司的选择方法介绍#xff1a; Java中的ArrayDeque是实现Deque接口的类。 它是双端队列的基于数组的实现。 顾名思义#xff0c;双端队列是允许我们在前端和后端添加或删除项目的队列。 在开始之前#xff0c;让我们快速看一下ArrayDeque上的一些值得注意的点#xff1a; ArrayDeque没… 介绍 Java中的ArrayDeque是实现Deque接口的类。 它是双端队列的基于数组的实现。 顾名思义双端队列是允许我们在前端和后端添加或删除项目的队列。 在开始之前让我们快速看一下ArrayDeque上的一些值得注意的点 ArrayDeque没有容量限制。 数组的大小根据需要动态增长 我们不能将空值添加到ArrayDeque 这不是线程安全的实现 由于双端队列为双端我们可以使用它作为一个堆栈或队列 实例化 我们可以使用以下构造函数之一来实例化ArrayDeque //creates an empty ArrayDeque with default capacity of 16
ArrayDeque()//creates an ArrayDeque with all the elements present in the given collection
ArrayDeque(Collection c)/*
*constructs an empty ArrayDeque with a capacity sufficient
* to hold given number of elements
*/
ArrayDeque(int numElements) 我们对数据结构执行的最常见操作涉及插入检索和删除。 在这里对于每种操作我们都有两组方法。 对于一组方法如果操作失败则会得到异常。 另一组方法将只返回一个指示操作状态的特殊值。 让我们探索这些方法 运作方式 在头 尾巴 引发异常 返回特殊值 引发异常 返回特殊值 插入 无效addFirste boolean offerFirste 无效addLaste boolean offerLaste 恢复 E getFirst E peekFirst E getLast E peekLast 删除/删除 E removeFirst E pollFirst E removeLast E pollLast 1.插入 addFirst/ offerFirst方法将一个元素添加到Deque的正面。 同样 addLast/ offerLast方法将元素添加到末尾。 这两种口味之间的区别是 如果发生容量冲突 addFirst/ addLast方法将引发异常 offerFirst/ offerLast方法仅因容量不足而返回false 但是 ArrayDeque是无限制的双端队列实现。 因此 offerFirst/ addFirst和offerLast/ addLast方法的行为方式相同。 他们只是根据用法将元素添加到正面或背面 DequeInteger dq new ArrayDeque();dq.addFirst(1);
dq.addLast(2);
dq.offerFirst(3);
dq.offerLast(4);System.out.println(dq); //[3, 1, 2, 4]2.检索 getFirst/ getLast或peekFirst/ peekLast方法将分别返回第一个和最后一个元素而不会将其删除 DequeInteger dq new ArrayDeque();dq.addFirst(1);
dq.addFirst(2);System.out.println(dq.getFirst() : dq.peekFirst()); //2:2
System.out.println(dq.getLast() : dq.peekLast()); //1:1 注意在空双端队列上调用getFirst/ getLast方法将引发异常。 但是如果双端队列为空则peekFirst/ peekLast方法将返回null DequeInteger dq new ArrayDeque(); // empty dequeInteger val1 dq.getFirst(); //throws NoSuchElementExceptionInteger val2 dq.peekFirst(); // null3.删除 要从双端队列中删除一个元素我们可以使用 removeFirst/ removeLast分别从双端队列中移除第一个/最后一个元素。 如果双端队列为空则这些方法将引发异常或者 pollFirst/ pollLast分别从双端队列中移除first / last元素。 他们将为空双端队列返回null DequeInteger dq new ArrayDeque();dq.addLast(1);
dq.addLast(2);Integer val1 dq.removeFirst(); //1
System.out.println(dq); //[2]Integer val2 dq.pollFirst(); //2
System.out.println(dq); //[]val1 dq.removeFirst(); // will throw a NoSuchElementException
val2 dq.pollFirst(); // null4.其他方法 让我们看一下其他一些常用方法 void pushE e将元素压入双端队列的堆栈表示的顶部 E pop在双端队列的堆栈表示顶部弹出一个元素 boolean isEmpty对于空的双端队列返回true int size返回双端队列所包含的元素数 boolean containsObject obj如果给定对象存在于双端队列中则返回true void clear删除所有双端队列元素 E remove返回并删除head元素 boolean removeFirstOccurrenceE e从头到尾遍历双端队列并删除指定元素的第一次出现 boolean removeLastOccurrenceE e删除指定元素的最后一次出现 结论 在本教程中我们了解了流行的Deque实现类即ArrayDeque 。 根据Javadocs当用作堆栈时此类可能比Stack快。 另外用作队列时它可能比LinkedList更快。 大多数ArrayDeque操作在前端或后端进行操作的摊销成本为O1 。 翻译自: https://www.javacodegeeks.com/2019/05/java-arraydeque.html