ArrayList vs LinkedList en Java

Una array es una colección de elementos almacenados en ubicaciones de memoria contiguas. La idea es almacenar varios artículos del mismo tipo juntos. Sin embargo, la limitación de la array es que el tamaño de la array está predefinido y fijo. Hay múltiples formas de resolver este problema. En este artículo, se discute la diferencia entre dos clases que se implementan para resolver este problema llamadas ArrayList y LinkedList .

ArrayList es parte del marco de la colección . Está presente en el paquete java.util y nos proporciona arreglos dinámicos en Java. Sin embargo, puede ser más lento que las arrays estándar, pero puede ser útil en programas donde se necesita mucha manipulación en la array. Podemos agregar y eliminar elementos dinámicamente. Se redimensiona automáticamente. El siguiente es un ejemplo para demostrar la implementación de ArrayList. 

Ejemplo

Java

// Java program to Illustrate Working of an ArrayList
 
// Importing required classes
import java.io.*;
import java.util.*;
 
// Main class
class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an ArrayList of Integer type
        ArrayList<Integer> arrli
            = new ArrayList<Integer>();
 
        // Appending the new elements
        // at the end of the list
        // using add () method via for loops
        for (int i = 1; i <= 5; i++)
            arrli.add(i);
 
        // Printing the ArrayList
        System.out.println(arrli);
 
        // Removing an element at index 3
        // from the ArrayList
        // using remove() method
        arrli.remove(3);
 
        // Printing the ArrayList after
        // removing the element
        System.out.println(arrli);
    }
}
Producción

[1, 2, 3, 4, 5]
[1, 2, 3, 5]

LinkedList es una estructura de datos lineal donde los elementos no se almacenan en ubicaciones contiguas y cada elemento es un objeto separado con una parte de datos y una parte de dirección. Los elementos se vinculan mediante punteros y direcciones. Cada elemento se conoce como un Node. Debido a la dinámica y facilidad de las inserciones y eliminaciones, son preferibles a las arrays . El siguiente es un ejemplo para demostrar la implementación de LinkedList. 

Nota: esta clase implementa la estructura de datos LinkedList .

Ejemplo

Java

// Java program to Demonstrate Working of a LinkedList
 
// Importing required classes
import java.util.*;
 
// Main class
class GFG {
 
    // main driver method
    public static void main(String args[])
    {
 
        // Creating an object of the
        // class linked list
        LinkedList<String> object
            = new LinkedList<String>();
 
        // Adding the elements to the object created
        // using add() and addLast() method
 
        // Custom input elements
        object.add("A");
        object.add("B");
        object.addLast("C");
 
        // Print the current LinkedList
        System.out.println(object);
 
        // Removing elements from the List object
        // using remove() and removeFirst() method
        object.remove("B");
        object.removeFirst();
 
        System.out.println("Linked list after "
                           + "deletion: " + object);
    }
}
Producción: 

[A, B, C]
Linked list after deletion: [C]

 

Ahora, después de tener una comprensión adecuada de ambos, analicemos las diferencias entre ArrayList y LinkedList en Java.

Lista de arreglo Lista enlazada
Esta clase usa una array dinámica para almacenar los elementos en ella. Con la introducción de genéricos , esta clase admite el almacenamiento de todo tipo de objetos. Esta clase usa una lista doblemente enlazada para almacenar los elementos en ella. Similar a ArrayList, esta clase también admite el almacenamiento de todo tipo de objetos.
La manipulación de ArrayList lleva más tiempo debido a la implementación interna. Cada vez que eliminamos un elemento, internamente, la array se recorre y los bits de memoria se desplazan. Manipular LinkedList toma menos tiempo en comparación con ArrayList porque, en una lista doblemente enlazada, no existe el concepto de cambiar los bits de memoria. Se recorre la lista y se cambia el enlace de referencia.
Esta clase implementa una interfaz List . Por lo tanto, esto actúa como una lista. Esta clase implementa tanto la interfaz List como la interfaz Deque . Por lo tanto, puede actuar como una lista y un deque.
Esta clase funciona mejor cuando la aplicación exige almacenar los datos y acceder a ellos. Esta clase funciona mejor cuando la aplicación exige la manipulación de los datos almacenados.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *