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:

Java Program to Find the Minimum value of Binary Search Tree
Java Program to Implement Merge Sort Algorithm on Linked List
Java Program to Find Transitive Closure of a Graph
Java Program to Implement Counting Sort
Generating Random Dates in Java
Java Program to Implement ConcurrentHashMap API
Java Program to Find the Longest Path in a DAG
Spring’s RequestBody and ResponseBody Annotations
Java Program to Implement Direct Addressing Tables
Spring Boot - Runners
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Program to Find the Number of Ways to Write a Number as the Sum of Numbers Smaller than Itself
A Custom Data Binder in Spring MVC
Tìm hiểu về xác thực và phân quyền trong ứng dụng
Extract links from an HTML page
A Guide to Java SynchronousQueue
Guide to @JsonFormat in Jackson
Java Program to Implement Gaussian Elimination Algorithm
Chuyển đổi Array sang ArrayList và ngược lại
Retrieve User Information in Spring Security
Serve Static Resources with Spring
Java Program to Implement Randomized Binary Search Tree
How to Kill a Java Thread
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Java Program to Perform Arithmetic Operations on Numbers of Size
Set Interface trong Java
REST Web service: Tạo ứng dụng Java RESTful Client với Jersey Client 2.x
Java Program to Implement HashMap API
Java Program to Implement Hash Tables with Linear Probing
Các chương trình minh họa sử dụng Cấu trúc điều khiển trong Java
Vector trong Java
Java Program to Implement Lloyd’s Algorithm