소개
이 랩에서는 Java 에서 Integer List 를 int Array 로 변환하는 과정을 안내합니다. List 에 데이터를 수집한 후 기본 배열 (primitive array) 로 작업해야 할 때 Java 프로그래밍에서 흔히 사용되는 작업입니다.
이 변환을 수행하기 위해 두 가지 다른 접근 방식을 살펴볼 것입니다.
- Java 의 Stream API 와
stream.mapToInt()메서드 사용 - Apache Commons Lang 의
ArrayUtils.toPrimitive()메서드 사용
이 랩을 마치면 두 가지 방법 모두 이해하고 자체 Java 애플리케이션에 적용할 수 있게 됩니다.
실험을 위한 Java 클래스 생성
이 첫 번째 단계에서는 변환 방법을 시연하기 위해 Java 클래스를 생성합니다. Maven 을 사용하여 종속성 (dependency) 과 프로젝트 구조를 관리합니다.
- 먼저, 프로젝트 디렉토리에 있는지 확인합니다.
cd /home/labex/project
- Maven 소스 디렉토리에 새 Java 파일을 생성합니다.
cd src/main/java

- 다음 내용으로
IntegerListToIntArray.java를 생성합니다.
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
public class IntegerListToIntArray {
public static void main(String[] args) {
System.out.println("Converting Integer List to int Array Demo");
System.out.println("---------------------------------------");
// We'll add our code here in the following steps
}
}
- Maven 을 사용하여 코드를 컴파일합니다.
cd /home/labex/project
mvn compile
- 프로그램을 실행하여 작동하는지 확인합니다.
mvn exec:java
콘솔에 헤더 텍스트가 출력되는 것을 볼 수 있습니다. 오류가 없으면 다음 단계로 이동할 준비가 된 것입니다.
Integer List 생성 및 채우기
이 단계에서는 Integer List 를 생성하고 몇 개의 숫자를 추가합니다. 코딩을 시작하기 전에 이 변환이 왜 필요한지 이해해 보겠습니다.
Integer List 와 int Array 간 변환이 필요한 이유
Java 에서는 숫자로 작업하는 두 가지 방법이 있습니다.
기본 타입 (
int):- 숫자만 저장하는 기본 숫자 타입
- 메모리를 덜 사용
- List 와 같은 컬렉션에서 직접 사용할 수 없음
- 예시:
int x = 5;
래퍼 클래스 (
Integer):- 숫자를 포함하는 객체
- List 와 같은 컬렉션에서 사용할 수 있음
- 추가적인 메서드와 기능을 가짐
- 예시:
Integer x = 5;
우리는 종종 List 에 숫자를 수집합니다 (이 경우 Integer가 필요함). 하지만 일부 메서드는 더 나은 성능을 위해 기본 int 배열이 필요합니다. 이것이 바로 두 타입 간 변환이 필요한 이유입니다.
Java 코드 업데이트
IntegerListToIntArray.java 파일을 수정하여 숫자 목록을 생성하고 표시해 보겠습니다.
- 프로젝트 디렉토리에 있는지 확인합니다.
cd /home/labex/project
src/main/java/IntegerListToIntArray.java를 열고 기존 print 문 뒤의main메서드 안에 다음 코드를 추가합니다.
// Create a List of Integer objects
List<Integer> integerList = new ArrayList<>();
// Add some numbers to the list
integerList.add(1);
integerList.add(2);
integerList.add(3);
integerList.add(4);
integerList.add(5);
// Display the list contents
System.out.println("Original Integer List:");
for (Integer num : integerList) {
System.out.print(num + " ");
}
System.out.println("\n");

- 프로그램을 컴파일하고 실행합니다.
mvn compile
mvn exec:java
다음과 유사한 출력을 볼 수 있습니다.
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
이 출력은 Integer List 를 성공적으로 생성하고 숫자로 채웠음을 확인합니다. 다음 단계에서는 이 목록을 기본 int 배열로 변환하는 방법을 배우겠습니다.
Stream API 를 사용하여 List 를 Array 로 변환
이 단계에서는 Java 의 Stream API 를 사용하여 Integer List 를 int 배열로 변환하는 첫 번째 방법을 배우겠습니다. Stream API 는 데이터 컬렉션을 처리하는 현대적이고 효율적인 방법을 제공합니다.
Java Stream 이해하기
Java 의 Stream 은 데이터를 단계별로 처리할 수 있는 파이프라인과 같습니다.
- 소스 (List) 에서 데이터를 가져옵니다.
- 데이터를 처리합니다 (Integer 를 int 로 변환).
- 결과를 수집합니다 (배열로).
변환 코드 추가
- 프로젝트 디렉토리에 있는지 확인합니다.
cd /home/labex/project
src/main/java/IntegerListToIntArray.java를 열고 목록 생성 코드 뒤에 다음 코드를 추가합니다.
// Method 1: Using Stream API
System.out.println("Converting using Stream API:");
// Convert Integer List to int array using Stream
int[] intArrayUsingStream = integerList.stream() // Create a stream from the list
.mapToInt(Integer::intValue) // Convert Integer to int
.toArray(); // Collect results into an array
// Print the converted array
System.out.println("Converted int Array:");
for (int value : intArrayUsingStream) {
System.out.print(value + " ");
}
System.out.println("\n");
- 프로그램을 컴파일하고 실행합니다.
mvn compile
mvn exec:java
다음과 같은 출력을 볼 수 있습니다.
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
코드 이해하기
변환이 어떻게 작동하는지 자세히 살펴보겠습니다.
integerList.stream()- 목록에서 스트림을 생성합니다..mapToInt(Integer::intValue)- 각 Integer 를 int 로 변환합니다..toArray()- 모든 int 값을 배열로 수집합니다.
Integer::intValue는 메서드 참조 (method reference) 라고 합니다. 이는 number -> number.intValue()를 간결하게 작성하는 방법입니다.
ArrayUtils 를 사용하여 List 를 Array 로 변환
이 단계에서는 Apache Commons Lang 라이브러리의 ArrayUtils 클래스를 사용하여 목록을 변환하는 두 번째 방법을 배우겠습니다. 이 방법은 더 간단하며 초보자에게 이해하기 쉬울 수 있습니다.
ArrayUtils 이해하기
ArrayUtils 클래스는 배열로 작업하기 위한 많은 유용한 메서드를 제공합니다. toPrimitive() 메서드는 특히 래퍼 타입 (예: Integer) 에서 기본 타입 (예: int) 으로 변환하는 데 도움이 됩니다.
ArrayUtils 변환 코드 추가
- Stream API 코드 뒤에 있는
IntegerListToIntArray.java파일에 이 코드를 추가합니다.
// Method 2: Using ArrayUtils
System.out.println("Converting using ArrayUtils:");
// First convert List<Integer> to Integer[]
Integer[] intermediateArray = integerList.toArray(new Integer[0]);
// Then convert Integer[] to int[]
int[] intArrayUsingArrayUtils = ArrayUtils.toPrimitive(intermediateArray);
// Print the converted array
System.out.println("Converted int Array:");
for (int value : intArrayUsingArrayUtils) {
System.out.print(value + " ");
}
System.out.println("\n");
- 프로그램을 컴파일하고 실행합니다.
mvn compile
mvn exec:java
이제 출력에서 두 가지 변환 방법을 모두 볼 수 있습니다.
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
Converting using ArrayUtils:
Converted int Array:
1 2 3 4 5
코드 이해하기
ArrayUtils 메서드는 두 단계로 작동합니다.
integerList.toArray(new Integer[0])- List 를 Integer 객체의 배열로 변환합니다.ArrayUtils.toPrimitive()- Integer 배열을 int 배열로 변환합니다.
이 방법은 더 간단하지만 Apache Commons Lang 라이브러리가 필요합니다.
요약
이 Lab 에서는 Java 에서 Integer List 를 int Array 로 변환하는 두 가지 방법을 배웠습니다.
- Java 의 Stream API 사용:
int[] array = integerList.stream().mapToInt(Integer::intValue).toArray();
- 현대적이고 함수적인 접근 방식
- Java 에 내장되어 있음
- 단계별 데이터 처리에 적합
- Apache Commons Lang 의 ArrayUtils 사용:
int[] array = ArrayUtils.toPrimitive(integerList.toArray(new Integer[0]));
- 더 간단한 접근 방식
- 외부 라이브러리가 필요함
- 이해하고 사용하기 쉬움
두 방법 모두 동일한 결과를 얻으며, 필요에 더 적합한 방법을 선택할 수 있습니다.
- 현대적이고 함수적인 접근 방식을 원할 때는 Stream API 를 사용합니다.
- 더 간단하고 읽기 쉬운 코드를 원할 때는 ArrayUtils 를 사용합니다.
이제 Java 애플리케이션에서 Integer List 와 int 배열 간에 변환하는 데 필요한 지식을 갖추게 되었습니다.



