"¿Qué tal un poco de entrenamiento para tu cerebro? Espero que todavía esté funcionando bien".

"Anteriormente, en la tabla de contenedores y colecciones vio que la misma interfaz puede tener múltiples implementaciones. Ahora le diré por qué lo necesitamos. Y en qué se diferencia ArrayList de LinkedList ".

"La cuestión es que las colecciones se pueden implementar de diferentes maneras y ninguna implementación siempre es ideal. En un enfoque, algunas operaciones son rápidas, pero otras son lentas. Lo contrario puede ser cierto para otro enfoque. No existe un modelo único perfecto. solución para todos".

"Es por eso que se tomó la decisión de implementar varias versiones de la misma colección. Cada implementación debe optimizarse para un conjunto limitado de operaciones. Así es como surgieron diferentes colecciones. Estudiemos dos clases como ejemplos: ArrayList y LinkedList ".

ArrayList frente a LinkedList - 1

"Internamente, ArrayList se implementa como una matriz ordinaria . Es por eso que insertar un elemento en el medio requiere que primero cambiemos todos los elementos sucesivos por uno y luego coloquemos el nuevo elemento en la ranura libre. Obtener y configurar elementos (get, set ) es rápido , ya que estas operaciones simplemente abordan el elemento de matriz relevante".

LinkedList tiene una estructura interna diferente. Se implementa como una lista con elementos interconectados : un conjunto de elementos distintos, cada uno de los cuales almacena referencias a los elementos siguientes y anteriores en la lista. Para insertar un elemento en el medio de dicha lista, solo necesita cambiar las referencias de sus futuros vecinos.Sin embargo, para obtener el elemento No. 130, debe ejecutar cada objeto del 0 al 130. En otras palabras, las operaciones de obtención y configuración serán lentas.Mire la siguiente tabla :"

Descripción Operación Lista de arreglo Lista enlazada
obtener un elemento conseguir Rápido Lento
Establecer un elemento colocar Rápido Lento
Agregar un elemento (al final de la lista) agregar Rápido Rápido
Insertar un elemento (en una posición arbitraria) añadir (yo, valor) Lento Rápido
Quitar un elemento eliminar Lento Rápido

"Ya veo. Estoy empezando a entenderlo ahora. ¿Hay algún criterio o regla que me ayude a saber qué colección es mejor en una situación particular?"

"Para mantenerlo simple, le daré la siguiente regla: si va a insertar (o eliminar) elementos con frecuencia en medio de la colección, es mejor usar LinkedList. En todos los demás casos, ArrayList funciona mejor " .

"Profundizaremos en cómo están estructurados en lecciones más avanzadas, pero por ahora solo practicaremos su uso".