Java/자바 정리

170. asDoubleStream()과 boxed() – 기본형 스트림 변환하기

코딩하는냥이 2025. 5. 26. 10:55
반응형

자바의 IntStream은 정수 전용 스트림으로,
필요에 따라 double 스트림으로 변환하거나,
객체 스트림(Stream<Integer>)으로 변환해야 할 때가 있습니다.
이번 예제에서는 asDoubleStream()과 boxed() 메서드를 통해
기본형 스트림을 다양한 방식으로 변환하는 방법을 실습해보겠습니다.


📌 예제 코드

import java.util.Arrays;
import java.util.stream.IntStream;

public class MapExample {
	public static void main(String[] args) {
		int intArray[] = { 1, 2, 3, 4, 5 };

		// int → double 스트림으로 변환
		IntStream intStream = Arrays.stream(intArray);
		intStream.asDoubleStream().forEach(System.out::println);
		System.out.println();

		// int → Integer 객체 스트림으로 변환
		intStream = Arrays.stream(intArray);
		intStream.boxed().forEach(System.out::println);
	}
}

💻 실행 결과

1.0
2.0
3.0
4.0
5.0

1
2
3
4
5

💬 코드 설명

  • asDoubleStream()
    → IntStream을 DoubleStream으로 변환하여 출력 형식이 실수(double) 로 바뀝니다.
  • boxed()
    → IntStream의 각 값을 Integer 객체로 포장하여 Stream<Integer>로 변환합니다.
  • 두 스트림 모두 forEach()로 요소를 출력하고 있으며, 데이터는 동일하지만 타입이 다릅니다.

💡 포인트 정리

  • asDoubleStream()
    → IntStream → DoubleStream으로 변환할 때 사용하며, 실수 계산에 유용합니다.
  • boxed()
    → 기본형 스트림을 객체 스트림으로 바꿔야 할 때 필수입니다.
    예: Collectors.toList()나 filter(...) 등의 객체 연산에 사용
  • 기본형 스트림 (IntStream, DoubleStream, LongStream)은
    성능 최적화를 위해 객체 스트림보다 가볍게 동작합니다.

📌정리하자면, 이번 예제에서는 IntStream을 다양한 형태로 변환하는 두 가지 방법인
asDoubleStream()과 boxed()를 실습해보았습니다.
이러한 변환은 상황에 따라 정밀한 실수 연산이나 객체 기반의 스트림 연산이 필요할 때 유용하게 활용됩니다.