问题标签 [arraydeque]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
5395 浏览

java - ArrayDeque 如何比堆栈快?

根据javadoc,

当用作堆栈时,ArrayDeque 类可能比 Stack 更快

我不明白 ArrayDeque 怎么能比堆栈快。假设栈使用链表实现如下:

对于大量元素,ArrayDeque 会产生调整大小的开销,这在使用 LinkedList 实现的 Stack 中不会出现这种情况。那么 ArrayDeque 到底比栈快多少呢?

0 投票
2 回答
832 浏览

java - 为什么类 ArrayDeque 不从 AbstractQueue 扩展?

为什么类ArrayDeque定义为

而不是作为

如果您看下图(其中有错误,ArrayDeque 与 Set 的关系完全错误),那么 ArrayDeque 将从 AbstractQueue 继承是有道理的,因为它通过 Deque 接口间接实现了 Queue 接口。

在此处输入图像描述
(来源:academic.ru

0 投票
1 回答
159 浏览

java - 使用 arraydeque 的生产者-消费者仅在断点处工作

我正在使用 ArrayDeque 实现生产者和消费者模式并遇到一个奇怪的问题。

由于 my_queue 是公开的,我可能有 > 1 个线程执行 my_queue.add(msg)。然而,奇怪的发生是因为 doSomething 在生产中运行时从未被调用。但是,当我处于调试模式并使用断点时,将调用 doSomething()!谁能解释一下?

0 投票
2 回答
1958 浏览

java - ArrayDeque 类的 addFirst 方法

java.util.ArrayDeque 类中 addFirst 方法的代码是

在这里,我无法理解的含义

此外,假设数组大小为 10。head 为 0,tail 为 9(数组已满)。在这种情况下,将在什么索引系统上进行插入?(我的理解是:如果数组已满,则先增加其大小,然后在 arraySize()-1 索引中插入。)

0 投票
1 回答
892 浏览

java - java数组双端队列大小与性能

在我的 java 代码中,我怀疑 java.util.ArrayDeque 的大小正在影响性能,但我想在这里确认是否是这种情况。

在我的代码中,如果双端队列不为空,我将删除一个轨迹对象,并在新线程上启动一个模拟,直到 40 个模拟同时运行。在每次模拟结束时,有可能将更多轨迹添加到队列中。如果在所有模拟完成后仍有轨迹留在队列中,则该过程会自行重复。

我使用的操作是 remove()、add()、isEmpty(),以及从另一个类中获取 Deque。在计时每次迭代时,我发现对于 4421 个对象的 Deque 大小,它需要 7756 毫秒。而对于 103 个对象的 Deque 大小,则需要 43 毫秒。

0 投票
4 回答
2953 浏览

java - ArrayDqueue 类的 add(E e) 和 offer(E e) 的区别

嗨,我使用 add 和 offer 在最后一步添加我的元素。两者都返回布尔值,并且除了 NPE 之外都不会抛出任何异常。

两者都将通过返回一个布尔值将元素添加到最后一个位置。

JAVA实现

0 投票
2 回答
17492 浏览

java - ArrayDeque vs ArrayList 实现堆栈

的文档ArrayDeque说:

这个类在作为栈使用时可能比 Stack 快,作为队列使用时比 LinkedList 快。

没有提到使用 anArrayDeque作为堆栈和使用ArrayList. 您可以将 anArrayList用作堆栈,如下所示。

我发现当我ArrayList只用这种方式时,它的性能比ArrayDeque. 造成这种差异的原因是什么?当然,它不能只是调用size()? 在内部,两者ArrayListArrayDeque都是Object[]在需要时使用更大的数组替换的,所以性能肯定应该差不多吗?

0 投票
2 回答
351 浏览

java - 向 ArrayDeque 添加对象时遇到 NullPointerException

该类旨在保存一堆房间号(即酒店客人入住的房间)并允许检索最后入住的房间(LIFO)。

现在,我只想添加一个项目,但似乎不起作用。我可以为此使用堆栈,但我正在尝试使用 ArrayDeque(因为它应该更灵活?)。

无论如何,当执行提供整数作为参数的 addRoom() 方法时,ArrayDeque 在第 14 行抛出 NullPointerException,我使用 ArrayDeque 的addFirst()add()方法。

我不明白当我明确提供整数值时,它怎么会抱怨整数为空。请协助。

0 投票
1 回答
736 浏览

c++ - 返回双端队列数组 C++

如何在 C++ 中返回双端队列数组?

//当然在实现该功能时给我一个错误-但是我应该把括号放在哪里?

0 投票
1 回答
3175 浏览

java - 关于Java中ArrayDeque的实现

文档说:

Deque 接口的可调整大小的数组实现。数组双端队列没有容量限制;它们根据需要增长以支持使用

但是我仍然想了解 ArrayDeque 的结构到底是什么,调整大小是如何工作的。如果有人可以提供可靠的来源,我可以找到答案,那将是很棒的。根据我发现的一些谷歌结果,它可能实现为一个循环数组。这是真的吗?什么是增长政策?它类似于 ArrayList 吗?如果是,ArrayDeque 在最后添加或删除元素等操作上是否具有与 ArrayList 相似的性能?

谢谢你。