我必须实现一种算法,该方法始终将条目最后插入,并将条目从第一个位置删除。

我检查了以下链接

Performing the fastest search - which collection should i use?

他们说:“ ArrayList存储在内存中的连续空间中。这允许操作系统使用优化措施,例如“当访问内存中的一个字节时,很可能很快将访问下一个字节。”因此,ArrayList是比LinkedList快”

但是一种情况:在列表的开头插入/删除元素时(因为数组中的所有元素都必须移动)。在ArrayList的情况下,在末尾或中间添加/删除,迭代,访问元素都更快。

在我的算法中,总是删除第一个元素。因此,总是发生移位。在这种情况下,我不应该使用arraylist?

最佳答案

这实际上取决于您希望对结构进行更多操作。

如果大多数情况下,您只是在末尾添加并从头开始删除,则Deque的任何实现都可以。因此,ArrayDequeLinkedList可能是您的最佳人选。

ArrayDeque由数组支持,因此可以通过具有O(1)复杂性的索引快速访问,但缺点是添加速度可能比LinkedList慢,因为有时需要调整支持数组的大小。

LinkedList只是一个链表,因此不断增长/缩小都是O(1),但是按索引访问并不是因为找到nth条目是O(n)

10-08 20:14