Diferencia clave: ArrayList frente a LinkedList
Las colecciones son útiles para almacenar datos. En una matriz normal, el tamaño de la matriz es fijo. A veces es necesario crear arreglos que puedan crecer según sea necesario. Los lenguajes de programación como Java tienen colecciones. Es un marco con un conjunto de clases e interfaces. Sirve como contenedor para un grupo de elementos. Las colecciones permiten almacenar, actualizar, recuperar un conjunto de elementos. Ayuda a trabajar con estructuras de datos como listas, conjuntos, árboles y mapas. La lista es una interfaz del marco de la colección. ArrayList y LinkedList son dos clases en el marco de las colecciones. Implementan la interfaz de colección y la interfaz de lista. Este artículo analiza la diferencia entre ArrayList y LinkedList. ArrayList es una clase que amplía AbstractList e implementa la interfaz List, que utiliza internamente una matriz dinámica para almacenar elementos de datos. LinkedList es una clase que amplía AbstractSequentialList e implementa las interfaces List, Deque y Queue, que utilizan internamente una lista doblemente enlazada para almacenar elementos de datos. Esa es la diferencia clave entre ArrayList y LinkedList.
¿Qué es ArrayList?
La clase ArrayList se utiliza para crear matrices dinámicas. A diferencia de una matriz normal, el tamaño de una matriz dinámica no es fijo. Un objeto creado usando la clase ArrayList puede almacenar un conjunto de elementos en la lista. La capacidad aumenta automáticamente, por lo que el programador puede agregar elementos a la lista. La clase ArrayList amplía la clase AbstractList que implementa la interfaz List. Por lo tanto, ArrayList puede utilizar los métodos de la interfaz List. Para acceder a los elementos se utiliza el método get(). El método add() se puede usar para agregar elementos a la lista. El método remove() se usa para eliminar un elemento de la lista. Consulte el siguiente programa.
Figura 01: Ejemplo de ArrayList
Según el programa anterior, se crea un objeto de ArrayList. Usando el método add, los elementos se pueden agregar dinámicamente. Los elementos "A", "B", "C", "D" y "E" se agregan utilizando el método de suma. El método de eliminación se utiliza para eliminar un elemento de la lista. Al pasar 4 al método de eliminación, la letra en el cuarto índice que es "E" se elimina de la lista. Al iterar a través de la lista usando el bucle for, se imprimirán las letras A, B, C y D.
¿Qué es LinkedList?
Al igual que ArrayList, LinkedList se utiliza para almacenar elementos de datos de forma dinámica. Un objeto creado usando la clase LinkedList puede almacenar un conjunto de elementos en la lista. La capacidad aumenta automáticamente, por lo que el programador puede agregar elementos a la lista. Utiliza internamente una lista doblemente enlazada para almacenar datos. En una lista doblemente enlazada, los datos se almacenan como nodos. Cada nodo contiene dos enlaces. El primer enlace apunta al nodo anterior. El siguiente enlace apunta al siguiente nodo en la secuencia.
La clase LinkedList amplía la clase AbstractSequentialList e implementa la interfaz List. Por lo tanto, los métodos de la interfaz List pueden ser utilizados por LinkedList. El método get() se puede utilizar para acceder a elementos de la lista. El método add() se puede usar para agregar elementos a la lista. El método remove() se usa para eliminar un elemento de la lista. Consulte el siguiente programa.
Figura 02: Ejemplo con LinkedList
Según el programa anterior, se crea un objeto de LinkedList. Usando el método add, los elementos se pueden agregar dinámicamente. Los elementos "A", "B", "C", "D" y "E" se agregan utilizando el método de suma. El método de eliminación se utiliza para eliminar un elemento de la lista. Al pasar 4 al método de eliminación, la letra en el cuarto índice que es "E" se elimina de la lista. Al iterar usando el bucle for, se imprimirán las letras A, B, C y D.
¿Cuáles son las similitudes entre ArrayList y LinkedList?
- Tanto ArrayList como LinkedList implementan la interfaz List.
- Tanto ArrayList como LinkedList pueden contener elementos duplicados.
- Tanto ArrayList como LinkedList mantienen el orden de inserción.
¿Cuál es la diferencia entre ArrayList y LinkedList?
ArrayList frente a LinkedList |
|
ArrayList es una clase que amplía AbstractList e implementa la interfaz List que utiliza internamente una matriz dinámica para almacenar elementos de datos. | LinkedList es una clase que amplía AbstractSequentialList e implementa las interfaces List, Deque, Queue, que internamente utiliza una lista doblemente enlazada para almacenar elementos de datos. |
Acceso a elementos | |
Acceder a elementos de ArrayList es más rápido que de LinkedList. | El acceso a los elementos de LinkedList es más lento que el de ArrayList. |
Elementos de manipulación | |
La manipulación de elementos de ArrayList es más lenta que la de LinkedList. | La manipulación de elementos de LinkedList es más rápida que la de ArrayList. |
Comportamiento | |
ArrayList funciona como una lista. | LinkedList funciona como una lista y una cola. |
Resumen: ArrayList frente a LinkedList
El marco de recopilación permite trabajar con estructuras de datos como listas, árboles, mapas y conjuntos. La lista es una interfaz del marco de colección. Este artículo discutió la diferencia entre ArrayList y LinkedList. ArrayList es una clase que amplía AbstractList e implementa la interfaz List que utiliza internamente una matriz dinámica para almacenar elementos de datos. LinkedList es una clase que extiende AbstractSequentialList e implementa las interfaces List, Deque, Queue, que internamente usa una lista doblemente enlazada para almacenar elementos de datos. Esa es la diferencia entre ArrayList y LinkedList.