2009-06-23 9 views
0

理論上、ArrayListまたはLinkedListから要素を削除する方が効率的ですか?ArrayListまたはLinkedListから要素を削除する方が効率的ですか?

+0

これは本当に言い直されるべきです。 「ArrayListやLinkedListから要素を削除する方が効率的ですか?理論はそれとはほとんど関係がなく、「より簡単」は誤解を招くだけです。 – AgileJon

+2

ヨハンナ、あなたが「より簡単に」を意味するものを定義してください。プログラマーにとってはより簡単か、CPUにとってはより効率的ですか? –

答えて

10

それはArrayListからの除去がリスト—内の新しい位置に、アレイのすべての後続の要素を後続のすべての要素を移動する必要があるため、LinkedListからそれらを削除する(つまり、より効率的である)「簡単に」を割り当てなければならないです新しい価値。リンクされたリストでは、1つのポインタ(または2つのリンクされたリストを持つ2つ)のみを再割り当てする必要があります。

5

(二重リンクされた)リストからの要素の削除は、O(1)です。しかし、配列からの削除では、残りの要素が配列内の1つのスペース、O(n)だけ下にシフトする必要があります。

つまり、インデックスで特定の要素を取得するのはO(n)ですが、インデックスで特定の要素を取得するのはO(1)です。

したがって、実際の削除のために、LinkedListが優れています。 Arrayの対LinkedList hereに関する情報があります。

+0

'linkedList.remove(100)'はO(n)であることに注意してください。 – sulai

関連する問題