问题标签 [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 投票
4 回答
702 浏览

java - 为什么 Deque (ArrayDeque) 容量是 2 的幂?

在 Java 中(但在 PHP 中类似),ArrayDeque实现的容量总是 2 的幂:

http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/share/classes/java/util/ArrayDeque.java#l126

因为HashMap这个选择是明确的 - 基于修剪的 32 位散列具有均匀的元素分布。但是Deque按顺序插入/删除元素。

此外,ArrayList不会将其容量限制为 2 的幂,只需确保它至少是元素的数量。

那么,为什么Deque实现需要它的容量是 2 的幂呢?

0 投票
1 回答
109 浏览

java - Java 8:ArrayDeque<>.poll 在并行环境中返回 null

我正在尝试维护多个线程之间的项目列表,每个线程一个(例如,每个线程一个套接字连接)。我将这个列表保存在一个ArrayDeque<>. 我面临的问题ArrayDeque<>是超过没有的项目。线程池中的线程数。

这是我的代码:

在我的代码中,我正在创建一个大小为 10 的工作窃取池,谁能告诉我为什么不。在这种情况下,元素的ArrayDeque<>数量超过 10?

0 投票
1 回答
89 浏览

java - 哪种Java结构更好用?我需要良好的性能、非固定大小和易于克隆/复制

我想要一个性能良好的数据结构,它允许从一个结构轻松克隆/复制到另一个结构。我的流程如下所示:

  • list1,满载物件。
  • 遍历对象,从每个对象创建几个相同类型的对象,然后将它们添加到list2.
  • 从 中删除所有对象list1并将所有对象添加list2list1.
  • 从 中删除所有对象list2

在我使用的那一刻,我坚持选择一种数据结构,ArrayDeque这不是很快。对象的数量不是固定的,所以数组可能不是一个好的选择。请问有什么建议吗?这是我的代码:

谢谢 !

0 投票
0 回答
164 浏览

java - 我试图在java中实现一个循环数组双端队列

到目前为止,这是我编写的代码,但测试一直失败,如果有人可以提供帮助,我可以提供测试文件。谢谢你!

要求是前面应该从位置 0 开始,后面应该从位置长度 -1 开始。

同样在空队列中,后方是逆时针到前方的一个位置,而在满队列中,后方是逆时针到前方的两个位置。

在我们的 Dequeue 实现中,没有计数变量来跟踪元素的数量。相反,为了区分满队列和空队列,我们​​绝不允许队列完全满。

一个完整的队列是一个在数组中只有一个空点的队列。这样我们就可以通过查看前后的相对位置来区分空队列和满队列。

0 投票
1 回答
221 浏览

java - Java ArrayDeque 删除和轮询方法错误

目前我正在编写 ArrayDeque 的实现。我正在研究 pollFirst、pollLast、removeFirst 和 removeLast 方法。我不完全确定我写的方法是否正确。我编写了一个驱动程序来测试这些方法,但我不确定输出是否正确。

驱动程序可以在这里找到:https ://pastebin.com/bH0D78jG

以下是以下方法:

民意调查:

投票最后:

删除优先

删除最后一个

这是示例输出的图片

我最关心的是方法以及它如何在 pollFirst 和 pollLast 之后输出数组。双端队列的每一端不应该有一个空值吗?

0 投票
1 回答
112 浏览

java - ArrayDeque: addLast(E) + removeLast() 会和 push(E) / pop() 一样吗?喜欢 addFirst(E) + removeFirst() 有什么好处吗?

ArrayDeque文档状态push(E)与 相同addFirst(E),并且与pop()相同removeFirst()

addLast(E)我认为使用+removeLast()对方法可以达到相同的效果。

  1. 那正确吗 ?
  2. 喜欢addFirst(E)+removeFirst()有什么好处吗?
0 投票
1 回答
111 浏览

java - 我们可以用 ArrayDeque 替换 ArrayList 以获得更好的性能吗?

我正在阅读 Kathy sierra 的 OCP8 指南,发现一行内容如下:

“ArrayDeque 就像一个性能更好的 ArrayList”

现在我对在哪里使用ArrayList和在哪里使用感到困惑ArrayDeque。我也知道 ArrayDeque 的大小总是调整为 2 的幂。调整大小时,容量会翻倍,因此在某些情况下这可能会影响性能。但我想知道两者之间哪个更可取。非常感谢您的帮助。

0 投票
2 回答
43 浏览

java - 如何退出此功能?

我正在创建一个模拟纸牌游戏“战争”的 java 程序。请注意,我对编码很陌生。我的牌库里有 54 张牌,包括两张小丑。战争开始后,我的程序会进行无休止的战争,并继续将越来越多的牌添加到玩家的牌组中。谁能看到我错过了什么?这是我的播放功能:

然后这是我运行战争的功能:

我在这个类中还有一个函数可以初始化卡片组,我的打印语句显示它工作正常。我有单独的类来创建卡片、初始牌组和我的玩家。如果显示这些类会有所帮助,我可以发布更多代码的更新。先感谢您。

(编辑添加我的播放器类)

0 投票
0 回答
140 浏览

java - 使用循环数组实现的双端队列

这是来自 Lafore 的数据结构和算法一书中的编程练习:

在此处输入图像描述

到目前为止,我有这个:

}

主要课程:

}

问题:

1)现在我正在对同一个对象应用所有操作,我做对了吗?或者我必须创建新对象(或向现有对象添加重置方法)才能按顺序应用 insertLeft()、insertRight()、removeLeft()、removeRight() 组合?

2)如果可以按顺序使用方法,我的代码是否返回正确的结果?

0 投票
2 回答
792 浏览

java - Java ArrayDeque 中的 pop() 和 remove() 有本质区别吗?

remove 和 pop 都从队列的前面删除并返回一个元素。如果队列为空,它们都会抛出异常。