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 Webflux with Kotlin
New Features in Java 11
Hướng dẫn Java Design Pattern – MVC
Java Program to Create the Prufer Code for a Tree
Display Auto-Configuration Report in Spring Boot
Java Program to Implement Ford–Fulkerson Algorithm
Java Program to Implement Gaussian Elimination Algorithm
Using a Custom Spring MVC’s Handler Interceptor to Manage Sessions
Java Program to Generate Random Numbers Using Middle Square Method
Java Program to Find the Edge Connectivity of a Graph
Java InputStream to Byte Array and ByteBuffer
Hướng dẫn sử dụng Lớp FilePermission trong java
Java Program to Implement Park-Miller Random Number Generation Algorithm
Java Program to Implement Euclid GCD Algorithm
Guide to java.util.Formatter
Period and Duration in Java
Apache Commons Collections BidiMap
Converting Java Date to OffsetDateTime
Introduction to Spliterator in Java
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Finding Max/Min of a List or Collection
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
New Features in Java 14
The Registration API becomes RESTful
Java Program to Implement Interpolation Search Algorithm
Java Program to Find Number of Spanning Trees in a Complete Bipartite Graph
Java Program to Generate Random Numbers Using Probability Distribution Function
Java 8 and Infinite Streams
Spring Boot Integration Testing with Embedded MongoDB
How to Get All Dates Between Two Dates?
Java Program to Implement CopyOnWriteArraySet API
Spring Boot Actuator