Diferencia entre ArrayList y LinkedList en Java

Autor: Laura McKinney
Fecha De Creación: 3 Abril 2021
Fecha De Actualización: 6 Mayo 2024
Anonim
Tutorial java #27 - ArrayList Vs LinkedList
Video: Tutorial java #27 - ArrayList Vs LinkedList

Contenido


ArrayList y LinkedList son las Colección clases, y ambos implementan el Lista interfaz. La clase ArrayList crea la lista que se almacena internamente en un dinámica formación que crece o se reduce en tamaño a medida que los elementos se agregan o eliminan. LinkedList también crea la lista que se almacena internamente en un Doblemente Vinculado Lista. Ambas clases se utilizan para almacenar los elementos en la lista, pero la principal diferencia entre las clases ArrayList y LinkedList es que Lista de arreglo permite el acceso aleatorio a los elementos de la lista, ya que opera en un basado en índices estructura de datos. Por otro lado, el Lista enlazada no permite acceso aleatorio ya que no tiene índices para acceder a elementos directamente, tiene que recorrer la lista para recuperar o acceder a un elemento de la lista.


Discutamos algunas diferencias más entre ArrayList y LinkedList con la ayuda de la tabla de comparación que se muestra a continuación.

  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo

Bases para la comparaciónLista de arregloLista enlazada
Básico ArrayList permite el acceso aleatorio a los elementos en la lista.LinkedList no permite el acceso aleatorio a los elementos de la lista.
Estructura de datosLa estructura interna utilizada para almacenar elementos es la matriz dinámica.La estructura interna utilizada para almacenar elementos es una lista de enlaces doble.
Se extiendeArrayList extiende la clase AbstarctList.LinkedList extiende AbstractSequentialList.
ImplementosAbstractList implementa la interfaz de lista.LinkedList implementa List, Deque, Queue.
Acceso El acceso a los elementos de la lista es más rápido en ArrayList.El acceso a los elementos en la lista es más lento en LinkedList.
ManipulaciónLa manipulación de elementos en la lista es más lenta en ArrayList.La manipulación de elementos en la lista es más rápida en LinkedList.
ComportamientoArraylList se comporta como List mientras implementa list.LinkedList se comporta como List y como Queue, ya que implementa List y Queue ambos.


Definición de ArrayList

los AbstractList la clase se define por el Marco de colección. Se extiende AbstarctList e implementa Lista interfaz. ArrayList utiliza matriz dinámica es decir, la matriz de longitud variable como una estructura de datos interna para almacenar los elementos en la lista. La necesidad de ArrayList surge cuando la matriz en java es de longitud fija. Por lo tanto, no puede aumentar o reducir su tamaño a medida que los elementos se agregan o eliminan de la matriz. Por lo tanto, debe conocer de antemano el tamaño de la matriz requerida. Pero la lista de matrices implementada usando la clase ArrayList puede crecer y reducir su tamaño a medida que los elementos se agregan o eliminan de la matriz.

Se puede acceder a la lista de matrices implementada usando ArrayList al azar como ArrayList opera en base al índice. Entonces, conociendo el índice, puede acceder directamente al elemento de la lista. Hay tres constructores de ArrayList:

ArrayList () ArrayList (Colección <? Extiende E> c) ArrayList (int capacidad)

los primero El constructor implementa una lista de matriz vacía. los segundo el constructor implementa una lista de matriz inicializada usando el Colección c elementos. los tercero el constructor implementa la lista de matrices con el capacidad proporcionado en el argumento. Al trabajar con ArrayList, a veces será necesario convertir la Collection ArrayList en una matriz. Se puede hacer llamando toArray ().

Definición de LinkedList

Al igual que ArrayList, Lista enlazada también es un Colección usos de clase lista doblemente vinculada como una estructura de datos interna para almacenar los elementos en la lista. La clase LinkedList se extiende AbstractSequentialList e implementa el Lista, Deque y Cola interfaces No se puede acceder al azar a la lista vinculada implementada usando LinkedList. Si desea recuperar cualquier elemento de la lista, debe iterar la lista para buscar ese elemento.

Hay dos constructores en la clase LinkedList.

LinkedList () LinkedList (Colección <? Extiende E> c)

los primero El constructor crea una lista enlazada vacía. los segundo El constructor crea una lista vinculada, inicializada con los elementos de Colección C.

En LinkedList, la manipulación de la lista es fácil y rápida. Esto se debe a que si agrega o elimina cualquier elemento de la lista, no hay necesidad de cambiar los elementos como en ArrayList. Pero el acceso es más lento ya que no tiene índice para acceder directamente a los elementos.

  1. Se puede acceder al azar a la lista implementada por ArrayList porque ArrayList adopta la estructura de datos basada en índices de la matriz. Por otro lado, no se puede acceder al azar a la lista implementada por LinkedList porque para recuperar o acceder a un elemento en particular en la lista hay que recorrer la lista.
  2. La estructura de datos interna utilizada por ArrayList para almacenar los elementos de la lista es un matriz dinámica que puede crecer o reducirse a medida que los elementos se agregan o eliminan de la lista. Sin embargo, la estructura de datos interna utilizada por LinkedList para almacenar los elementos en la lista es lista doblemente vinculada.
  3. ArrayList extiende el AbstractList clase que también es una clase Collection, mientras que la clase LinkedList se extiende AbstractSequentialList clase que nuevamente es una clase de colección.
  4. La clase ArrayList implementa Lista interfaz, mientras que la clase LinkedList implementa Lista, Colay Deque interfaces
  5. Acceder a elementos de la lista implementada usando ArrayList es Más rápido ya que tiene una estructura de datos basada en índices. Por otro lado, no hay una estructura basada en índices en la lista implementada porLinkledList. Por lo tanto, se aplica un iterador sobre la lista para llegar al elemento al que se accede, lo que hace que el acceso más lento en LinkedList.
  6. Manipulación es Manipulación en la lista implementada usando ArrayList porque cada vez que se agrega o elimina un elemento de la lista, los elementos de la lista se desplazan para acomodar el cambio. Por otro lado, la manipulación es más rápida en la lista implementada por LinkedList, ya que no requiere elementos de desplazamiento en la lista al agregar o eliminar los elementos de la lista.
  7. ArrayList actúa como un lista mientras implementa la interfaz List mientras que LinkedList actúa como lista y cola ya que implementa List y Queue ambos.

Conclusión:

Cuando hay una adición o eliminación frecuente de los elementos en la lista, LinkedList debe usarse ya que funciona mejor durante la manipulación. Si la búsqueda frecuente se aplica a la lista, ArrayList es la mejor opción, ya que funciona mejor al acceder a elementos de la lista.