我知道有很多关于列表性能比较的主题。我可以向你保证这不是重复的。
我找到了名为GlueList的新数据结构,这让我想到了。
我对列表数据结构感到困惑(GlueList,ArrayList和LinkedList)。
如何为给定的任务选择其中一个。
答案 0 :(得分:1)
<强> GlueList 强>
* “a”个已创建的节点。 节点数组的“b”大小。 *
get(int index)是O(1)~O(a)
add(E元素)是O(1)~O(a * b)
add(int index,E element)是O(1)~O(a * b)
remove(int index)是O(1)~O(a * b)
Iterator.remove()是O(1)~O(a * b)
ListIterator.add(E元素)是O(1)~O(a * b)
<强> 链表 强>
get(int index)是O(n)
add(E元素)是O(1)
add(int index,E element)是O(n)
remove(int index)是O(n)
Iterator.remove()是O(1)
ListIterator.add(E元素)是O(1)
<强> 的ArrayList 强>
get(int index)是O(1)
add(E元素)是O(1)摊销,但O(n)最坏情况,因为数组必须调整大小并复制
add(int index,E element)是O(n - index)摊销,但是O(n)最坏情况(如上所述)
remove(int index)是O(n - index)(即删除last是O(1))