IntStream을 사용하는 이유
이 글을 작성하게 된 이유는 "이것이 자바다" 책의 Stream 파트를 공부하다가 아래 코드에서 변수의 자료형을 왜 Stream이 아닌 IntStream을 사용하는지 궁금해졌기 때문이다.
import java.util.Arrays;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
int[] array= {1,2,3,4,5};
IntStream intStream=Arrays.stream(array);
//Stream<Integer> intStream=Arrays.stream(array);
intStream.asDoubleStream().forEach(d->System.out.println(d));
}
}
이 코드에서 IntStream을 사용하는 이유는 기본형 배열(int [])을 스트림으로 변환할 때 Arrays.stream()이 기본형인 int를 다루는 스트림을 반환하기 때문이다. 만약 Stream를 사용하려면 int 값을 Integer로 변환하는 과정이 필요하다. 즉 이 상황에서는 박싱을 굳이 할 필요가 없기 때문에 IntStream을 사용하는 것이다.
Stream<Integer>, IntStream 차이
Stream
1. 객체 스트림(Stream<T>)의 한 종류로, Integer 객체를 저장한다.
2. 내부 요소들이 참조 타입(Integer)이므로, 박싱(Boxing), 언박싱(Unboxing)이 필요하다.
3. 숫자 연산에 최적화된 메서드를 제공하지 않는다.
IntStream
1. 기본형 int를 다루는 스트림이다.
2. Stream<Integer>와 달리 기본형(int)을 직접 다룰 수 있어 성능이 향상된다.
3. sum(), average(), min(), max() 등 숫자 연산에 최적화된 메서드를 제공한다.
4. Stream<Integer>과 다르게 박싱(Boxing), 언박싱(Unboxing) 과정이 필요 없다.
정리
불필요한 박싱, 언박싱을 피하고 기본형인 int를 직접 다루기 위해 IntStream을 사용하기도 하지만 숫자 관련 연산을 쉽게 하기 위해서 IntStream을 사용하기도 한다!
'Language > JAVA' 카테고리의 다른 글
[JAVA]reduce() 메서드 (0) | 2025.02.14 |
---|---|
[JAVA]Optional 클래스 (0) | 2025.02.10 |
[JAVA]내부 반복자 vs 외부 반복자 (0) | 2025.02.05 |
[JAVA]String 클래스 메소드 (0) | 2025.01.20 |
[JAVA]입출력 메서드 (0) | 2025.01.14 |