-
[Java] Arrays.asList(int[]) 의 잘못된 사용programming/JAVA 2022. 3. 27. 20:59반응형
Arrays.asList() 는 배열을 List로 바꿔주는 것으로 알고 있었다.
그래서 아래와 같은 코드를 의심 없이 작성하였다.
(코드를 작성할 때 의도한 것은 2,4를 배열에 넣고, 3,4가 해당 배열에 있는지, 없는지 확인하는 코드이다.)
int[] int_numbers = {2,4}; Integer[] integer_numbers = {2,4}; @DisplayName("List.contains 테스트") @Test void listContainsTest(){ assertAll( ()->assertFalse(Arrays.asList(int_numbers).contains(3) , "int_numbers contains 3"), ()->assertTrue(Arrays.asList(int_numbers).contains(4) , "int_numbers contains 4"), ()->assertFalse(Arrays.asList(integer_numbers).contains(3) , "integer_numbers contains 3"), ()->assertTrue(Arrays.asList(integer_numbers).contains(4) , "integer_numbers contains 4") ); }
해당 코드를 실행해보면 아래와 같은 결과를 볼 수 있다.
"int_numbers contains 3"은 성공했고, "int_numbers contains 4"는 실패했는데 사실 둘 다 실패한 것이다.
실제로 Arrasys.asList로 반환된 값들을 foreach로 실행해보면, 기대한 것과 다른 결과를 반환한다.
int[] int_numbers = {2,4}; Integer[] integer_numbers = {2,4}; @DisplayName("List.foreach 테스트") @Test void listForeachTest(){ Arrays.asList(int_numbers).forEach(ints -> { System.out.println("int_numbers >> " + ints); }); Arrays.asList(integer_numbers).forEach(integers->{ System.out.println("integer_numbers >> " + integers); }); }
실행결과는 integer_numbers는 기대한 대로 2,4가 출력됐지만,
int_numbers의 2,4는 출력되지 않았다.
Arrays.asList(int_numbers)는 List <int []> 형태로 반환하기 때문에 기대했던 값들을 확인할 수 없었던 것이다.
더 자세한 내용은 아래 링크를 참조하면 알 수 있다.
https://stackoverflow.com/questions/1467913/arrays-aslist-not-working-as-it-should
반응형'programming > JAVA' 카테고리의 다른 글
[Java] 특수문자를 사용한 문자열 split (0) 2022.06.12 [Java] LocalDate Unsupported field: HourOfDay (0) 2022.06.06 [Java] Builder 어노테이션 기본값 사용하기(Builder.Default) (0) 2021.12.31 [Java] junit Disabled 어노테이션 사용하기 (0) 2021.11.26 [Java] 테스트메소드에 이름 붙이기 (0) 2021.11.24