ArrayList を支持し、LinkedList に反対する議論として広く認められていないのは、デバッグ中に LinkedList が不快であるということです。メンテナンス開発者がバグを見つけるなど、プログラムを理解するのに費やす時間は増加し、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 内部を除外するために必要な認知オーバーヘッドは言うまでもなく、Expand-The-Tree をクリックする悪夢になります。
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>