[JAVA] ArrayList<Integer> 를 int 배열로 변환

컴투루·2022년 6월 28일
0

Java

목록 보기
3/4

나누어 떨어지는 숫자 배열 문제를 통해 공부함

➕ toArray()
String 타입의 List를 배열로 변환하기 위해서 사용

String 타입은 항상 toArray()를 이용해서 배열로 변환했는데 위의 문제를 풀 때 Integer타입의 list를 배열로 변환하려 했더니 오류가 발생했다❗️

그래서 검색해본 결과 int형과 같은 primitive타입은 toArray()를 사용할 수 없다고 한다.

그렇다면 어떤 방법으로 변환이 가능할까❓

List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);

Integer형의 list가 위와 같이 구성되어있다고 가정하고 알아보자

📌 방법 1

int[] arr1 = new int[list.size()]
for (int i = 0 ; i < list.size() ; i++ ) {
	arr1[i] = list.get(i).intValue();
}
  1. int형의 배열 arr의 길이를 list의 size로 설정해서 선언해준다.
  2. list의 size만큼 반복문을 돌면서 arr1의 i번째에 list의 i번째를 intValue()를 통해 int형으로 변환해주고 대입한다.

📌 방법 2

int[] arr2 = list.stream()
			.mapToInt(i -> i)
            .toArray();
  1. list를 stream으로 변환하고 map을 이용해서 intStream을 가져온다.
  2. toArray()를 통해 배열로 만들어준다.

📌 방법 3

int[] arr3 = list.stream()
			.mapToInt(Integer :: intValue)
            .toArray()

방법2와 매우 유사하지만 방법2는 자바가 자동으로 각 요소의 Integer요소를 int형으로 변환해준다.
이와 달리 방법3에서는 intValue를 통해서 int형으로 변환해준다.

📌 방법 4

int[] arr4 = list.stream()
				.filter(i -> i != null)
                .mapToInt(i -> i)
                .toArray();

필터를 이용해서 null인 요소를 걸러내는 방법이다.


📑 References

Java-int형-ArrayList-배열-변환
Java에서 정수 목록을 정수 배열로 변환하는 방법

profile
맘 먹으면 못할 게 없지

0개의 댓글