ArrayList vs LinkedList in Java

An array is a collection of items stored at contiguous memory locations. The idea is to store multiple items of the same type together. However, the limitation of the array is that the size of the array is predefined and fixed. There are multiple ways to solve this problem. In this article, the difference between two classes which are implemented to solve this problem named ArrayList and LinkedList is discussed.

ArrayList

ArrayList is a part of the collection framework. It is present in the java.util package and provides us dynamic arrays in Java. Though, it may be slower than standard arrays but can be helpful in programs where lots of manipulation in the array is needed. We can dynamically add and remove items. It automatically resizes itself. The following is an example to demonstrate the implementation of the ArrayList.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to demonstrate the
// working of an ArrayList
  
import java.io.*;
import java.util.*;
  
class GFG {
  
    public static void main(String[] args)
    {
  
        // Declaring an ArrayList
        ArrayList<Integer> arrli
            = new ArrayList<Integer>();
  
        // Appending the new elements
        // at the end of the list
        for (int i = 1; i <= 5; i++)
            arrli.add(i);
  
        // Printing the ArrayList
        System.out.println(arrli);
  
        // Removing an element from the
        // List
        arrli.remove(3);
  
        // Printing the ArrayList after
        // removing the element
        System.out.println(arrli);
    }
}

chevron_right


Output:

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

LinkedList

This class implements the LinkedList Data Structure. Linked List are linear data structures where the elements are not stored in contiguous locations and every element is a separate object with a data part and address part. The elements are linked using pointers and addresses. Each element is known as a node. Due to the dynamicity and ease of insertions and deletions, they are preferred over the arrays. The following is an example to demonstrate the implementation of the LinkedList.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to demonstrate the
// working of a LinkedList
import java.util.*;
  
public class Test {
    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
        // linked list
        object.add("A");
        object.add("B");
        object.addLast("C");
  
        System.out.println(object);
  
        // Removing elements from the
        // list
        object.remove("B");
        object.removeFirst();
  
        System.out.println("Linked list after "
                           + "deletion: " + object);
    }
}

chevron_right


Output:

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

Difference Between ArrayList and LinkedList in Java

ArrayList LinkedList
This class uses a dynamic array to store the elements in it. With the introduction of generics, this class supports the storage of all types of objects. This class uses a doubly linked list to store the elements in it. Similar to the ArrayList, this class also supports the storage of all types of objects.
Manipulating ArrayList takes more time due to the internal implementation. Whenever we remove an element, internally, the array is traversed and the memory bits are shifted. Manipulating LinkedList takes less time compared to ArrayList because, in a doubly-linked list, there is no concept of shifting the memory bits. The list is traversed and the reference link is changed.
This class implements a List interface. Therefore, this acts as a list. This class implements both the List interface and the Deque interface. Therefore, it can act as a list and a deque.
This class works better when the application demands storing the data and accessing it. This class works better when the application demands manipulation of the stored data.

Attention reader! Don’t stop learning now. Get hold of all the important Java and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Improved By : KaashyapMSK