檢查Java中兩個列表是否相等
1.簡介
在這篇簡短的文章中,我們將重點討論測試兩個List
實例是否包含完全相同順序的相同元素的常見問題。
[List](https://docs.oracle.com/javase/8/docs/api/java/util/List.html)
是有序的數據結構,因此元素的順序取決於設計。
看看[List#equals](https://docs.oracle.com/javase/8/docs/api/java/util/List.html#equals-java.lang.Object-)
Java文檔的摘錄:
…如果兩個列表包含相同順序的相同元素,則定義為相等。
此定義確保equals方法可在List接口的不同實現中正常工作。
我們可以在編寫斷言時使用這些知識。
在以下代碼段中,我們將使用以下列表作為示例輸入:
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
在純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.結論
在本文中,我們探討瞭如何測試兩個List
實例是否包含相同順序的相同元素。這個問題最重要的部分是對List
數據結構如何工作的正確理解。
0 條評論,你可以發表評論,我們會進行改進
