본문 바로가기
코딩테스트-자바

Java 코테를 위한 기능 정리 - 스트림 -

by 시니성 2023. 7. 29.

IntStream은 Java 8부터 추가된 Java API의 일부로, 기본 타입 int를 스트림 형태로 다룰 수 있도록 해주는 클래스입니다. IntStream은 기본적으로 int 값들의 스트림을 생성하고, 다양한 중간 연산과 최종 연산을 사용하여 요소들을 변환, 필터링, 합산, 평균 등의 작업을 수행할 수 있습니다. 이를 통해 데이터를 보다 간결하고 효율적으로 처리할 수 있게 됩니다.

IntStreamjava.util.stream 패키지에 속해 있으며, 자주 사용되는 메서드들에는 다음과 같은 것들이 있습니다:

  • range(int startInclusive, int endExclusive): 주어진 범위에 포함되는 정수들로 구성된 스트림을 생성합니다. startInclusive는 포함되는 시작 값이고, endExclusive는 포함되지 않는 마지막 값입니다.
  • rangeClosed(int startInclusive, int endInclusive): 주어진 범위에 포함되는 정수들로 구성된 스트림을 생성합니다. startInclusiveendInclusive 모두 포함됩니다.
  • filter(IntPredicate predicate): 주어진 조건을 만족하는 요소들만 필터링하여 새로운 스트림을 생성합니다. predicateint 값을 입력받아 boolean 값을 반환하는 함수형 인터페이스입니다.
  • map(IntUnaryOperator mapper): 각 요소를 주어진 매핑 함수에 따라 변환하여 새로운 스트림을 생성합니다. mapperint 값을 입력받아 변환된 int 값을 반환하는 함수형 인터페이스입니다.
  • sum(): 스트림의 모든 요소를 합산합니다. 결과는 int 형태로 반환됩니다.
  • average(): 스트림의 모든 요소의 평균값을 계산합니다. 결과는 OptionalDouble 형태로 반환됩니다.
  • toArray(): 스트림의 요소들을 배열로 변환합니다.

이제 IntStream의 예시 코드를 아래에 제공하겠습니다:

import java.util.stream.IntStream;

public class IntStreamExample {
    public static void main(String[] args) {
        // 1부터 5까지의 정수들로 구성된 스트림 생성
        IntStream stream = IntStream.rangeClosed(1, 5);

        // 스트림의 요소들을 출력
        System.out.print("스트림 요소들: ");
        stream.forEach(element -> System.out.print(element + " ")); // Output: 1 2 3 4 5
        System.out.println();

        // 필터링하여 짝수만 출력
        System.out.print("짝수만 출력: ");
        IntStream.rangeClosed(1, 5)
                 .filter(element -> element % 2 == 0)
                 .forEach(element -> System.out.print(element + " ")); // Output: 2 4
        System.out.println();

        // 제곱값 계산하여 출력
        System.out.print("제곱값 출력: ");
        IntStream.rangeClosed(1, 5)
                 .map(element -> element * element)
                 .forEach(element -> System.out.print(element + " ")); // Output: 1 4 9 16 25
        System.out.println();

        // 합계 계산
        int sum = IntStream.rangeClosed(1, 5).sum();
        System.out.println("합계: " + sum); // Output: 15

        // 평균 계산
        double average = IntStream.rangeClosed(1, 5).average().orElse(0);
        System.out.println("평균: " + average); // Output: 3.0

        // 스트림의 요소들을 배열로 변환
        int[] array = IntStream.rangeClosed(1, 5).toArray();
        System.out.print("배열 출력: ");
        for (int element : array) {
            System.out.print(element + " "); // Output: 1 2 3 4 5
        }
    }
}

위 예시 코드에서는 IntStream을 이용하여 다양한 작업을 수행하는 방법을 보여줍니다. 스트림을 생성하고, 필터링하고, 변환하고, 합산하고, 평균값을 계산하며, 배열로 변환하는 등의 작업이 수행되고 있습니다. 이를 통해 데이터 처리를 보다 간결하고 효율적으로 할 수 있습니다.