- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前我正在编写 ArrayDeque 的实现。我正在研究 pollFirst、pollLast、removeFirst 和 removeLast 方法。我不完全确定我写的方法是否正确。我编写了一个驱动程序来测试这些方法,但我不确定输出是否正确。
驱动程序可以在这里找到:https://pastebin.com/bH0D78jG
这里有以下方法:
民意调查第一:
T result = (T) deque[head]; // Element is null if deque empty
if (result == null)
return null;
deque[head] = null; // Must null out slot
head = (head + 1) & (deque.length - 1);
return result;
投票最后:
int t = (tail - 1) & (deque.length - 1);
T result = (T) deque[t];
if (result == null)
return null;
deque[t] = null;
tail = t;
return result;
首先删除
T x = pollFirst();
if (x == null)
throw new NoSuchElementException();
return x;
删除最后一个
T x = pollLast();
if (x == null)
throw new NoSuchElementException();
return x;
this is a picture of the sample output
我最关心的是方法以及它如何在 pollFirst 和 pollLast 之后输出数组。双端队列的每一端不应该有一个空吗?
最佳答案
问题出在您的 pollLast
方法中。在 peekLast
方法中,您使用 tail
作为双端队列中最后一个元素的索引,但在 pollLast
方法中,您使用 tail - 1
作为该元素的索引。这意味着您要删除(并清空)倒数第二个元素而不是最后一个元素。
要修复此错误,请将行 T result = (T) deque[t];
更改为 T result = (T) deque[tail];
。
关于Java ArrayDeque 删除和轮询方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58646107/
当我需要使用堆栈时,我正试图在 Kotlin 中解决代码 2021 挑战第 10 天的到来。在发现你不应该再使用 Stack 而应该使用 ArrayDeque 之后,我得到了两个选项:java.uti
我已经构建了一个 arraydeque,并希望将这些 Double 值作为数组传递给构造函数。构建构造函数是为了根据特定条件单独处理数组值。 当使用 arraydeque 时,它不允许我检索这些
我有以下代码。 int clock; ArrayDeque q = new ArrayDeque(); int customer = 1; Random r = new
目前我正在编写 ArrayDeque 的实现。我正在研究 pollFirst、pollLast、removeFirst 和 removeLast 方法。我不完全确定我写的方法是否正确。我编写了一个驱动
最近我开始阅读“Java 7 Concurrency Cookbook”,在Creating and running a daemon thread 部分找到了创建主线程的代码和一个 ArrayDeq
我正在使用 ArrayDeque 创建一个基本的库存系统,其中的东西被插入库存。 Couch couch1 = new Couch("I wouldn't sit on it.", 100, true
我想问一下Arraydeque在add操作然后push时的行为是什么。并移除元素。队列是从头部还是尾部删除元素。 最佳答案 java.util.ArrayDeque.add(E e) 方法将指定元素
我使用 arraydeque 创建项目列表并向它们传递参数(项目是类) ArrayDeque Items= new ArrayDeque(); 但我对 java ArrayDeque 有疑问。也许有办
如何反向迭代 ArrayDeque? 我通常会对数组执行此操作,但它不可索引。 for (int i = delegate.size() - 1; i >= 0; i--) {} 谢谢 最佳答案 您可
根据javadoc, ArrayDeque class is likely to be faster than Stack when used as a stack 我不明白 ArrayDeque 怎
我正在尝试将我用 C++ 编写的双括号平衡器移动到 Java。 我试图通过像这样声明字符的 ArrayDeque 来使用 Deque 接口(interface)中的 ArrayDeque 类来实现堆栈
我在某些地方读到,Java 中的 LinkedList 添加和删除元素的时间复杂度为 O(1),而获取元素的时间复杂度为 O(n)。而 ArrayList 获取元素的时间复杂度为 O(1),添加和删除
我查看了 java.util.ArrayDeque 类的remove() 和removeFirst() 方法,我看到remove() 调用removeFirst() 并且两个方法执行相同的操作。为什么
由于 ArrayDeque 类实现了 Deque 并且它没有任何容量限制。addFirst()、addLast() 等异常抛出方法的目的是什么?由于数组没有边界,因此它会在任何情况下添加元素。有人可以
我有一个 BigInts 的 arrayDeque,我将其实现为基本上只保存字符串 IE BigInt@Instancewhatever = "3476234236734567" 我已经有一种方法可以
我想获取 ArrayDeque 的子列表这样there is in ArrayList 。有办法做到吗? 最佳答案 最简单的方法是从 Deque 和 sublist 创建一个新的 ArrayList。
我知道它们之间的基本区别,即 ConcurrentLinkedDeque 可以在多线程应用程序中使用。 任何人都可以给我一个实际的例子,如果错误使用它会如何影响应用程序的性能,在哪种情况下我应该使用
现在我对 ArrayDeque 指定元素有问题。 Storages.add(new Storage("Furniture storage", 5, 58)); 首先是存储类型。下一层 - 楼层,最后一
我正在尝试使用 java 存储素数列表并遇到 ArrayDeque。我不确定这是否是使用它的正确时机,但由于我不知道素数的数量,所以我需要容量增长。 代码旨在遍历数字 2 到 1000 并测试它们是否
是否可以在每次迭代中访问存储在 ArrayDeque 中的元素?由于 ArrayDeque 没有 get 方法,所以我很难访问每个元素。在下面的示例中,我有一个整数 arraydeque,我正在尝试使
我是一名优秀的程序员,十分优秀!