programming/JAVA
[Java] Arrays.asList(int[]) 의 잘못된 사용
LeeBorn
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
반응형