[Java] Integer ArrayList을 int 배열로 변환 방법

deannn.Park·2021년 12월 14일
15
post-thumbnail

String 타입의 List를 배열로 변환할 때는 toArray()를 사용하면 변환할 수 있다. 하지만 int형과 같은 primitive 타입은 toArray()를 사용할 수 없다. 따라서 int형과 같은 primitive 타입은 아래의 방법을 통해 가능하다.

public static void main(String args[]) {
    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    
    // 방법 1
    int[] arr1 = new int[list.size()]
    for (int i = 0 ; i < list.size() ; i++) 
        arr1[i] = list.get(i).intValue();
    
    // 방법 2
    int[] arr2 = list.stream()
                .mapToInt(i -> i)
                .toArray();
    
    // 방법 3
    int[] arr3 = list.stream()
                .mapToInt(Integer::intValue)
                .toArray();

    // 방법 4
    int[] arr4 = list.stream()
                .filter(i -> i != null)
                .mapToInt(i -> i)
                .toArray();
}

방법 1은 가장 기본적인 방법이다. 반복문을 통해 각 요소별로 접근하여 intValue 메서드를 사용해여 int형으로 만든 후 배열에 넣는 형식이다.

방법 2와 3은 리스트를 스트림으로 변환 후, map을 이용해서 intStream을 가져오고, 그 후에 toArray()를 통해 배열로 만드는 방법이다.
방법 2와 방법 3의 차이는 map 연산 시 int형으로 변경하는 방법의 차이이다. 방법 2는 자바가 자동으로 각 요소의 Integer 요소를 int형으로 unboxing 해준다. (java 5 이상) 하지만 방법 3은 intValue 메서드를 통해 각 요소를 int형으로 변경해준다.

방법 4는 방법 2에서 필터를 추가한 방법이다. 필터를 통해 리스트의 null을 걸러내는 방법이다.

참고
https://www.delftstack.com/ko/howto/java/how-to-convert-integer-list-to-int-array-in-java/
http://daplus.net/java-정수를-포함하는-arraylist를-기본-int-배열로-변환하는-방법/

profile
컴퓨터 관련 여러 분야 공부중

1개의 댓글

comment-user-thumbnail
2022년 9월 3일

덕분에 좋은 내용 잘 보고 갑니다
감사합니다.

답글 달기