Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中以固定时间将项移动到前面_Java - Fatal编程技术网

在Java中以固定时间将项移动到前面

在Java中以固定时间将项移动到前面,java,Java,我需要实现两个名为MoveToFront和MoveToBack的方法。它们必须将项目移动到阵列的前面,并将项目移动到阵列的后面。但问题是这必须是常数,这意味着项目的数量对方法的时间没有影响 我认为用Java中的数组是不可能做到这一点的。所以我必须使用另一种数据结构。我想用linkedList实现它,但这只有在我有项目索引的情况下才会保持不变。在你的问题陈述中,你说问题是“移到数组的前面”。如果它真的意味着数组,那么您是对的,这是不可能的,因为移动数组内容至少是O(n),其中“n”是要删除的元素的

我需要实现两个名为MoveToFront和MoveToBack的方法。它们必须将项目移动到阵列的前面,并将项目移动到阵列的后面。但问题是这必须是常数,这意味着项目的数量对方法的时间没有影响


我认为用Java中的数组是不可能做到这一点的。所以我必须使用另一种数据结构。我想用linkedList实现它,但这只有在我有项目索引的情况下才会保持不变。

在你的问题陈述中,你说问题是“移到数组的前面”。如果它真的意味着数组,那么您是对的,这是不可能的,因为移动数组内容至少是O(n),其中“n”是要删除的元素的位置

如果它不是一个数组,并且允许您选择数据结构,那么从根本上说,链表就是您所需要的。如何识别要移动的元素?如你所观察到的,如果按指数计算,这是很简单的。否则,保留一个单独的映射以允许O(1)查找任何元素的索引-假设元素是唯一的。那么这是一个问题

a。查看地图以获取索引

b。从列表中删除索引项

c。在所需位置替换列表中的条目


d。修复地图条目

其他条目是否必须保持有序?如果没有,就交换项目。它必须保持有序数据结构是否需要支持重复元素?MoveToFront和MoveToBack是否使用索引或元素?如果我理解正确,链表的结构会阻止使用您想要的索引。如果你说,“我想要索引5上的数据”,你仍然必须遍历节点0-4才能到达索引5。@user2357112supportsMonica我想它必须是一个索引。如果它是一个元素,我们必须首先在数组中搜索它,并且没有任何固定时间搜索算法可用于此操作。链表不支持按索引进行固定时间元素访问。映射可以保存节点对象,而不是索引。这可能是@guest试图表达的意思。他写的是第一步是查看地图以获取索引,但同意这可能需要一些修改。我会删除答案,但似乎需要声誉。