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:

Hướng dẫn Java Design Pattern – DAO
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java Program to Implement Bellman-Ford Algorithm
Spring Security Form Login
The HttpMediaTypeNotAcceptableException in Spring MVC
Java Program to Implement AVL Tree
Java 8 and Infinite Streams
Hướng dẫn Java Design Pattern – State
Chuyển đổi từ HashMap sang ArrayList
Spring Boot - Bootstrapping
Lập trình đa luồng với CompletableFuture trong Java 8
Spring REST API + OAuth2 + Angular
Call Methods at Runtime Using Java Reflection
Handling URL Encoded Form Data in Spring REST
Java Program to Implement Direct Addressing Tables
Java Program to Check if it is a Sparse Matrix
Derived Query Methods in Spring Data JPA Repositories
Một số tính năng mới về xử lý ngoại lệ trong Java 7
Jackson Annotation Examples
Java Program to Implement Adjacency List
Python Program to Differentiate Between del, remove, and pop on a List
A Guide to the Java ExecutorService
Hướng dẫn sử dụng Lớp FilePermission trong java
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
A Guide to Java HashMap
Show Hibernate/JPA SQL Statements from Spring Boot
Spring Security 5 for Reactive Applications
Wiring in Spring: @Autowired, @Resource and @Inject
Transaction Propagation and Isolation in Spring @Transactional
Logout in an OAuth Secured Application
Shuffling Collections In Java