Check If Two Lists are Equal in Java

1. Introduction

In this short article we’ll focus on the common problem of testing if two List instances contain the same elements in exactly the same order.

List is an ordered data structure so the order of elements matters by design.

have a look at an excerpt from the List#equals Java documentation:

… two lists are defined to be equal if they contain the same elements in the same order.

This definition ensures that the equals method works properly across different implementations of the List interface.

We can use this knowledge when writing assertions.

In the following code snippets, we will be using the following lists as example inputs:

List<String> list1 = Arrays.asList("1", "2", "3", "4");
List<String> list2 = Arrays.asList("1", "2", "3", "4");
List<String> list3 = Arrays.asList("1", "2", "4", "3");

2. JUnit

In a pure JUnit test, the following assertions will be true:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

3. TestNG

When using TestNG’s assertions they will look very similarly to JUnit’s assertions, but it’s important to notice that the Assert class comes from a different package:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

4. AssertJ

If you like to use AssertJ, it’s assertions will look as follows:

@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    assertThat(list1)
      .isEqualTo(list2)
      .isNotEqualTo(list3);

    assertThat(list1.equals(list2)).isTrue();
    assertThat(list1.equals(list3)).isFalse();
}

5. Conclusion

In this article, we have explored how to test if two List instances contain the same elements in the same order. The most important part of this problem was the proper understanding of how the List data structure is designed to work.

All code examples can be found on GitHub.

Related posts:

Spring WebClient vs. RestTemplate
Java Program to Implement Shunting Yard Algorithm
A Guide to the Java ExecutorService
Java Program to Solve the Fractional Knapsack Problem
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Jackson – Decide What Fields Get Serialized/Deserialized
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
Disable Spring Data Auto Configuration
How to Return 404 with Spring WebFlux
New Features in Java 14
Ép kiểu trong Java (Type casting)
Java Program to Implement Ford–Fulkerson Algorithm
Overview of Spring Boot Dev Tools
Java Program to Represent Linear Equations in Matrix Form
Java Program to Implement Booth Algorithm
Guava CharMatcher
Returning Image/Media Data with Spring MVC
Java Program to Represent Graph Using Adjacency List
Java Program to Implement the Vigenere Cypher
Java – Write an InputStream to a File
Spring Security Registration – Resend Verification Email
Java Program to Implement Johnson’s Algorithm
Spring Security – security none, filters none, access permitAll
A Guide to JUnit 5
New Features in Java 12
Count Occurrences of a Char in a String
Java Program to Implement Max Heap
Hướng dẫn sử dụng Lớp FilePermission trong java
Refactoring Design Pattern với tính năng mới trong Java 8
Java Program to Check Whether Topological Sorting can be Performed in a Graph