Java >> Tutorial de Java >  >> Tag >> ArrayList

Diferencia entre LinkedList y ArrayList en Java

Lista de arreglos y Lista enlazada , ambos implementan java.util.List interfaz y proporciona la capacidad de almacenar y obtener objetos como en colecciones ordenadas utilizando métodos API simples. Ambas son clases no sincronizadas. Aún así, son diferentes en muchos aspectos y necesitamos comprender ambas clases en detalle para tomar una decisión inteligente sobre cuándo usar qué clase.

1. LinkedList vs ArrayList:implementación interna

Ambas colecciones permiten duplicar elementos y mantener el orden de inserción de los elementos.

LinkedList lo implementa con una lista doblemente enlazada . ArrayList lo implementa con una matriz de cambio de tamaño dinámico . Esto conducirá a más diferencias en el rendimiento.

2. LinkedList frente a ArrayList:rendimiento

2.1. Añadir operación

Agregar elemento en ArrayList es O(1) operación si no requiere cambiar el tamaño de Array. Si se cambia el tamaño de la matriz, se convierte en O(log(n)) .

Agregar un elemento en LinkedList es O(1) operación, ya que no requiere ninguna navegación.

2.2. Eliminar operación

Cuando eliminamos un elemento de ArrayList (en la matriz de respaldo), mueve todos los elementos a la derecha. Lo acerca a O(n) en el peor de los casos (eliminar el primer elemento) y O(1) en el mejor de los casos (eliminar el último elemento).

La operación de eliminación de LinkedList da O(1) rendimiento porque solo necesita restablecer los punteros de los nodos anterior y siguiente. No se requiere copia ni movimiento.

2.3. iteración

La iteración es el O(n) operación para LinkedList y ArrayList donde n es un número de un elemento.

2.4. Obtener operación

ArrayList proporciona get(int index) método que encuentra directamente el elemento en una ubicación de índice dada. Es de orden O(1) .

LinkedList también proporciona get(int index) método PERO primero atraviesa todos los nodos para llegar al nodo correcto. Hace que el rendimiento sea variable. En el mejor de los casos es O(1) y en el peor de los casos es O(n) .

3. LinkedList vs ArrayList – Conclusión

Hasta que no esté tratando con un volumen muy alto de datos, ambas clases le darán el mismo nivel de rendimiento. Ambos proporcionan una recopilación ordenada y tampoco están sincronizados.

LinkedList implementa Deque interfaz también, por lo que proporciona cola como FIFO funcionalidad a través de métodos como peek() y poll() .

Como se ve en la comparación de rendimiento, ArrayList es mejor para almacenar y acceder a datos. LinkedList es mejor para manipular datos.

Eso es todo para arraylist vs linklist en java .

¡¡Feliz aprendizaje!!

Leer más:

Una guía para Java ArrayList
ArrayList Java Docs
LinkedList Java Docs
ArrayList vs Vector


Etiqueta Java