java集合中间插入_关于Java:在ArrayList 与LinkedList 中间插入

本问题已经有最佳答案,请猛点这里访问。

在Java的上下文中交谈。如果我想插入一个ArrayList或一个linkedList的中间,我被告知ArrayList会表现得很糟糕。

我理解这是因为,我们需要移动所有元素,然后进行插入。这应该是N/2的顺序,即O(N)。

但对于linkedList来说,情况不同吗?对于链表,我们需要遍历到找到中间位置,然后进行指针操作。在这种情况下,也需要O(N)时间。不是吗?

谢谢

可能更适合程序员stackexchange

任意插入对于ArrayList和LinkedList都是O(n)(对于平均和最坏的性能)。然后问题归结为哪个系数更大。分析并找出原因。

@达多-这里很好…依我所见

我不是说不能在这里回答,只是说它可能会引起程序员更多的注意。

这里的原因是链接列表中的元素没有实际的移动。链接列表是由节点组成的,每个节点都包含一个元素和一个指向下一个节点的指针。要将元素插入列表,只需要以下几点:

创建一个新节点来保存元素;

将前一个节点的下一个指针设置为新节点;

将新节点的下一个指针设置为列表中的下一个元素。

如果你曾经做过一系列回形针,你可以把每一个回形针看作是回形针链的开始,以及其后的所有回形针。要将新的回形针插入链条,只需在新回形针将要插入的位置断开回形针,然后插入新回形针。LinkedList就像一个回形针链。

ArrayList类似于一个柱箱或一个Mancala板,每个隔间只能容纳一个物品。如果你想在中间插入一个新的元素(并且保持所有元素的顺序相同),你就必须将所有元素都移到该位置之后

你可能感兴趣的:(java集合中间插入)