Javaで2つのリストが等しいかどうかを確認する

1.はじめに

この短い記事では、2つのリストインスタンスにまったく同じ順序で同じ要素が含まれているかどうかをテストするという一般的な問題に焦点を当てます。

リスト順序付けられたデータ構造であるため、要素の順序は設計上重要です。

List#equalsJavaドキュメントからの抜粋をご覧ください。

…2つのリストは、同じ要素が同じ順序で含まれている場合、等しいと定義されます。

この定義により、equalsメソッドがListインターフェイスのさまざまな実装間で正しく機能することが保証されます。

アサーションを作成するときに、この知識を使用できます。

次のコードスニペットでは、入力例として次のリストを使用します。

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

純粋なJUnitテストでは、次のアサーションが当てはまります。

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

3. TestNG

TestNGのアサーションを使用する場合、それらはJUnitのアサーションと非常によく似ていますが、Assertクラスが別のパッケージからのものであることに注意することが重要です。

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

4. AssertJ

AssertJを使用する場合、そのアサーションは次のようになります。

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

5。結論

この記事では、2つのリストインスタンスに同じ要素が同じ順序で含まれているかどうかをテストする方法について説明しました。この問題の最も重要な部分は、リストデータ構造がどのように機能するように設計されているかを正しく理解することでした。

すべてのコード例はGitHubにあります。