Post

Java 두 개의 List 비교

1. 두 개의 List 비교

List는 정렬 된 데이터 구조이므로 요소의 순서는 의도적으로 중요하다.

상세 사항은 List#equals를 참고한다.

두 개의 List는 동일한 요소를 동일한 순서로 포함하는 경우 동일한 것으로 정의된다.

이 정의는 equals 메소드가 List 인터페이스의 다른 구현에서 제대로 작동하도록 한다.

다음 코드에서는 다음 목록을 예제 입력으로 사용한다.

1
2
3
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 테스트에서 다음 어설션이 참이다.

1
2
3
4
5
6
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

3. TestNG

TestNG의 어설션을 사용할 때 JUnit의 어설션과 매우 유사하게 보이지만 Assert 클래스가 다른 패키지에서 온다.

1
2
3
4
5
6
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    Assert.assertEquals(list1, list2);
    Assert.assertNotSame(list1, list2);
    Assert.assertNotEquals(list1, list3);
}

4. AssertJ

AssertJ를 사용하려는 경우 어설션은 다음과 같다.

1
2
3
4
5
6
7
8
9
@Test
public void whenTestingForEquality_ShouldBeEqual() throws Exception {
    assertThat(list1)
      .isEqualTo(list2)
      .isNotEqualTo(list3);

    assertThat(list1.equals(list2)).isTrue();
    assertThat(list1.equals(list3)).isFalse();
}

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.