うまくいけば、これは重複ではありません。
何よりもまず、ArrayListが最良の選択ではないことは知っていますが、これは単なる好奇心です。
簡単に言うと、ArrayListの実装について疑問に思っていました。私はそれがストレージに配列を使用していることを調べて理解しました。
アレイの場合、次の場合:
int [] arr;
arrは配列の最初の要素を指し、整数として入力されているため、コンパイラーはジャンプ先を認識しています。
arr[2] => arr value + 2 * typeof(int) = address of arr[2]
さて、ArrayListは型がないので、コンパイラが次の項目がどこにあるかをどのように把握できるのか疑問に思いました。コンパイラがポインタ演算を実行できるように、データが何であるかを示すオーバーヘッドがあると思います。
結果として、ArrayListは、前に何があるかを知る必要があるため、データにジャンプすることはできないため、他の型指定されたコレクションよりもはるかに低速である必要があります。これはLinkedListと非常によく似ています。