Java中的集合
Java LinkedList指南
Java ArrayList指南
Java中不可變的ArrayList
CopyOnWriteArrayList指南
JavaJava中的多維ArrayList
將迭代器轉換為列表
Java –從列表中獲取隨機項目/元素
用Java對列表進行分區
從Java列表中刪除所有Null
從Java中的列表中刪除所有重複項
檢查Java中兩個列表是否相等
如何使用Java在列表中查找元素
Java列表UnsupportedOperationException
將列表複製到Java中的另一個列表
從列表中刪除所有出現的特定值
將多個元素添加到Java ArrayList
從列表中刪除第一個元素
在Java中迭代列表的方法
Java中兩個列表的交集
如何計算Arraylist中的重複元素
查找Java中兩個列表之間的差異
檢查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
數據結構如何工作的正確理解。