Vérifier si deux listes sont égales en Java

Vérifier si deux listes sont égales en Java

1. introduction

Dans ce court article, nous allons nous concentrer sur le problème courant de tester si deux instances deList contiennent les mêmes éléments exactement dans le même ordre.

List est une structure de donnéesordered donc l'ordre des éléments compte par conception.

jetez un œil à un extrait de la documentation Java deList#equals:

… Deux listes sont définies égales si elles contiennent les mêmes éléments dans le même ordre.

Cette définition garantit que la méthode equals fonctionne correctement dans différentes implémentations de l'interface List.

Nous pouvons utiliser cette connaissance lors de la rédaction d’assertions.

Dans les extraits de code suivants, nous utiliserons les listes suivantes à titre d'exemple:

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

2. JUnit

Dans un test JUnit pur, les assertions suivantes sont vraies:

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

3. TestNG

Lorsque vous utilisez les assertions de TestNG, elles ressemblent beaucoup aux assertions de JUnit, mais il est important de noter que la classeAssert provient d'un package différent:

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

4. AssertJ

Si vous aimez utiliserAssertJ, ses assertions ressembleront à ceci:

@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

Dans cet article, nous avons exploré comment tester si deux instancesList contiennent les mêmes éléments dans le même ordre. La partie la plus importante de ce problème était de bien comprendre comment la structure de données deList est conçue pour fonctionner.

Tous les exemples de code peuvent être trouvés surGitHub.