반응형
자바의 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()를 실습해보았습니다.
이러한 변환은 상황에 따라 정밀한 실수 연산이나 객체 기반의 스트림 연산이 필요할 때 유용하게 활용됩니다.
'Java > 자바 정리' 카테고리의 다른 글
173. sorted()에 직접 비교식 넣기 – 사용자 지정 정렬 구현하기 (0) | 2025.05.26 |
---|---|
172. 정렬 스트림 – sorted()와 reverseOrder()로 객체 정렬하기 (0) | 2025.05.26 |
171. flatMap()과 flatMapToInt() – 다차원 데이터를 평면화하기 (0) | 2025.05.26 |
169. mapToInt()를 이용한 필드 추출 – 점수만 뽑아서 출력하기 (0) | 2025.05.26 |
168. 스트림 필터링 – distinct()와 filter()의 조합 사용하기 (0) | 2025.05.23 |
167. 파일을 스트림으로 읽기 – Files.lines()를 활용한 텍스트 처리 (0) | 2025.05.23 |