Remove the First Element from a List

1. Overview

In this super-quick tutorial, we’ll show how to remove the first element from a List.

We’ll perform this operation for two common implementations of the List interface – ArrayList and LinkedList.

2. Creating a List

Firstly, let’s populate our Lists:

@Before
public void init() {
    list.add("cat");
    list.add("dog");
    list.add("pig");
    list.add("cow");
    list.add("goat");

    linkedList.add("cat");
    linkedList.add("dog");
    linkedList.add("pig");
    linkedList.add("cow");
    linkedList.add("goat");
}

3. ArrayList

Secondly, let’s remove the first element from the ArrayList, and make sure that our list doesn’t contain it any longer:

@Test
public void givenList_whenRemoveFirst_thenRemoved() {
    list.remove(0);

    assertThat(list, hasSize(4));
    assertThat(list, not(contains("cat")));
}

As shown above, we’re using remove(index) method to remove the first element – this will also work for any implementation of the List interface.

4. LinkedList

LinkedList also implements remove(index) method (in its own way) but it has also the removeFirst() method.

Let’s make sure that it works as expected:

@Test
public void givenLinkedList_whenRemoveFirst_thenRemoved() {
    linkedList.removeFirst();

    assertThat(linkedList, hasSize(4));
    assertThat(linkedList, not(contains("cat")));
}

5. Time Complexity

Although the methods look similar, their efficiency differs. ArrayList‘s remove() method requires O(n) time, whereas LinkedList‘s removeFirst() method requires O(1) time.

This is because ArrayList uses an array under the hood, and the remove() operation requires copying the rest of the array to the beginning. The larger the array is, the more elements need to be shifted.

Unlike that, LinkedList uses pointers meaning that each element points to the next and the previous one.

Hence, removing the first element means just changing the pointer to the first element. This operation always requires the same time not depending on the size of a list.

6. Conclusion

In this article, we’ve covered how to remove the first element from a List, and have compared the efficiency of this operation for ArrayList and LinkedList implementations.

As usual, the complete source code is available over on GitHub.

Related posts:

Java – Convert File to InputStream
Java Program to Check if a Directed Graph is a Tree or Not Using DFS
REST Web service: Basic Authentication trong Jersey 2.x
@DynamicUpdate with Spring Data JPA
Spring Boot Application as a Service
Java Program to Implement Unrolled Linked List
Spring Webflux with Kotlin
Spring Security OAuth2 – Simple Token Revocation
Sao chép các phần tử của một mảng sang mảng khác như thế nào?
Thao tác với tập tin và thư mục trong Java
Count Occurrences of a Char in a String
Java Program to Implement Max-Flow Min-Cut Theorem
Introduction to Spring MVC HandlerInterceptor
Registration with Spring Security – Password Encoding
Java InputStream to String
Python Program Read a File Line by Line Into a List
A Guide to TreeMap in Java
Hướng dẫn Java Design Pattern – Intercepting Filter
Java Program to Implement Queue
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Show Hibernate/JPA SQL Statements from Spring Boot
Spring – Injecting Collections
Spring Boot: Customize Whitelabel Error Page
Spring WebFlux Filters
Mệnh đề if-else trong java
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Java Program to Implement Find all Back Edges in a Graph
A Guide to the Java ExecutorService
Converting between an Array and a List in Java
Làm thế nào tạo instance của một class mà không gọi từ khóa new?
Check if a String is a Palindrome in Java
Java Program to Describe the Representation of Graph using Adjacency List