Controlla se due elenchi sono uguali in Java

1. Introduzione

In questo breve articolo ci concentreremo sul problema comune di testare se due istanze di List contengono gli stessi elementi esattamente nello stesso ordine.

L'elenco è una struttura dati ordinata , quindi l'ordine degli elementi è importante in base alla progettazione.

dai un'occhiata a un estratto dalla lista # uguale alla documentazione di Java:

... due elenchi sono definiti uguali se contengono gli stessi elementi nello stesso ordine.

Questa definizione garantisce che il metodo equals funzioni correttamente nelle diverse implementazioni dell'interfaccia List.

Possiamo usare questa conoscenza quando scriviamo asserzioni.

Nei seguenti frammenti di codice, utilizzeremo i seguenti elenchi come input di esempio:

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

In un test JUnit puro, saranno vere le seguenti affermazioni:

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

3. TestNG

Quando si utilizzano le asserzioni di TestNG, saranno molto simili alle asserzioni di JUnit, ma è importante notare che la classe Assert proviene da un pacchetto diverso:

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

4. AffermareJ

Se ti piace usare AssertJ, le sue asserzioni appariranno come segue:

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

5. conclusione

In questo articolo, abbiamo esplorato come verificare se due istanze di List contengono gli stessi elementi nello stesso ordine. La parte più importante di questo problema era la corretta comprensione del modo in cui la struttura dati List è progettata per funzionare.

Tutti gli esempi di codice possono essere trovati su GitHub.