ArrayListとLinkedListに対する広く認められていない議論は、デバッグ中のLinkedListsが不快であることです。バグ、増加など、プログラムを理解するためにメンテナンス開発者が費やす時間は増加し、IMHOは、エンタープライズアプリケーションでのパフォーマンス向上のナノ秒やメモリ消費のバイトを正当化しない場合があります。時々(まあ、もちろんそれはアプリケーションのタイプに依存します)、数バイトを浪費する方が良いですが、より保守しやすい、または理解しやすいアプリケーションを持っています。
たとえば、Java環境でEclipseデバッガーを使用して、ArrayListをデバッグすると、非常に理解しやすい構造が明らかになります。
arrayList ArrayList<String>
elementData Object[]
[0] Object "Foo"
[1] Object "Foo"
[2] Object "Foo"
[3] Object "Foo"
[4] Object "Foo"
...
一方、LinkedListのコンテンツを監視し、特定のオブジェクトを見つけることは、LinkedListの内部をフィルターで除外するために必要な認識オーバーヘッドは言うまでもなく、ツリーの展開という悪夢になります。
linkedList LinkedList<String>
header LinkedList$Entry<E>
element E
next LinkedList$Entry<E>
element E "Foo"
next LinkedList$Entry<E>
element E "Foo"
next LinkedList$Entry<E>
element E "Foo"
next LinkedList$Entry<E>
previous LinkedList$Entry<E>
...
previous LinkedList$Entry<E>
previous LinkedList$Entry<E>
previous LinkedList$Entry<E>