Todo depende del tipo de operación que esté haciendo mientras itera, todas las estructuras de datos tienen un equilibrio entre el tiempo y la memoria y, según nuestras necesidades, debemos elegir el DS correcto. Entonces, hay algunos casos en los que LinkedList es más rápido que la matriz y viceversa. Considere las tres operaciones básicas en estructuras de datos.
Dado que la matriz está basada en la estructura de datos basada en el índice, la búsqueda de array.get (index) tomará O (1) tiempo mientras que la lista vinculada no es el índice DS, por lo que deberá recorrer hasta el índice, donde index <= n, n es el tamaño de la lista vinculada, entonces la matriz es más rápida que la lista vinculada cuando tiene acceso aleatorio de elementos.
P. Entonces, ¿cuál es la belleza detrás de esto?
Como las matrices son bloques de memoria contiguos, se cargarán grandes porciones de ellas en la caché al primer acceso, esto hace que sea relativamente rápido acceder a los elementos restantes de la matriz, tanto como accedemos a los elementos en la localidad de referencia de la matriz también aumenta, por lo tanto, menos captura falla, la localidad de caché se refiere a las operaciones que se encuentran en la caché y, por lo tanto, se ejecutan mucho más rápido en comparación con la memoria, básicamente en la matriz maximizamos las posibilidades de acceso secuencial a elementos en la caché. Si bien las listas vinculadas no están necesariamente en bloques contiguos de memoria, no hay garantía de que los elementos que aparecen secuencialmente en la lista estén realmente organizados uno cerca del otro en la memoria, esto significa menos aciertos de caché, por ejemplo
Esto es fácil y rápido en LinkedList, ya que la inserción es una operación O (1) en LinkedList (en Java) en comparación con la matriz, considere el caso cuando la matriz está llena, necesitamos copiar el contenido a la nueva matriz si la matriz se llena, lo que hace que insertar un elemento en ArrayList de O (n) en el peor de los casos, mientras que ArrayList también necesita actualizar su índice si inserta algo en cualquier lugar excepto al final de la matriz, en el caso de una lista vinculada, no necesitamos cambiar su tamaño, solo necesita punteros de actualización.
Funciona como inserciones y mejor en LinkedList que en array.