ArrayList Vs LinkedList

Estaba siguiendo unPublicación anterio en esto que dice:

For LinkedList

get es O (n)add es O (1)remove es O (n) Iterator.remove es O (1)

For ArrayList

get es O (1)add es O (1) amortizado, pero O (n) en el peor de los casos ya que la matriz debe ser redimensionada y copiadaremove es O (n)

l mirar esto, llegué a la conclusión de que si tengo que hacer una inserción secuencial en mi colección, por ejemplo, 5000000 elementos,LinkedList superará aArrayList.

Y si solo tengo que recuperar los elementos de la colección iterando, es decir, sin agarrar el elemento en el medio, todavíaLinkedList superará a `ArrayList.

Ahora para verificar mis dos declaraciones anteriores, escribí el siguiente programa de ejemplo ... Pero me sorprende que mis declaraciones anteriores se hayan demostrado incorrectas.

ArrayList superadoLinkedlist en ambos casos. Tomó menos tiempo queLinkedList para agregar y recuperarlos de la Colección. ¿Hay algo que esté haciendo mal o las declaraciones iniciales sobreLinkedList yArrayList no es cierto para colecciones de tamaño 5000000?

Mencioné el tamaño, porque si reduzco el número de elementos a 50000,LinkedList funciona mejor y las declaraciones iniciales son ciertas.

long nano1 = System.nanoTime();

List<Integer> arr = new ArrayList();
for(int i = 0; i < 5000000; ++i) {
    arr.add(i);
}
System.out.println( (System.nanoTime() - nano1) );

for(int j : arr) {
    ;
}
System.out.println( (System.nanoTime() - nano1) );

long nano2 = System.nanoTime();

List<Integer> arrL = new LinkedList();
for(int i = 0; i < 5000000; ++i) {
    arrL.add(i);
}
System.out.println( (System.nanoTime() - nano2) );

for(int j : arrL) {
    ;
}
System.out.println( (System.nanoTime() - nano2) );

Respuestas a la pregunta(9)

Su respuesta a la pregunta