본문 바로가기
카테고리 없음

자바 스트림(Stream) 사용법 & 예제

by kangs' tong 2023. 11. 9.

자바 스트림(Stream) 사용법 & 예제

스트림(Stream)은 자바 8부터 도입된 새로운 개념으로, 컬렉션 데이터를 처리하는 기능을 제공합니다. 스트림은 데이터를 일관성있게 처리하기 위한 작업(필터링, 변환, 집계 등)을 수행할 수 있으며, 병렬 처리를 통해 성능을 개선할 수 있습니다.

스트림(Stream) 만들기

스트림을 사용하기 위해서는 먼저 스트림을 생성해야 합니다. 자바에서는 다음과 같은 방법으로 스트림을 생성할 수 있습니다.

  1. 컬렉션을 스트림으로 변환하기
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    

Stream stream = numbers.stream();


2. 배열을 스트림으로 변환하기
```java
int[] arr = {1, 2, 3, 4, 5};

IntStream stream = Arrays.stream(arr);
  1. 지정된 범위의 숫자를 스트림으로 생성하기
    IntStream stream = IntStream.range(1, 6);

스트림 연산하기

스트림을 생성했다면, 이제 스트림을 사용해 데이터를 처리할 수 있습니다. 스트림은 여러 가지 중간 연산과 최종 연산을 제공합니다.

중간 연산

중간 연산은 스트림을 통해 데이터를 변환하거나 필터링하는 작업을 수행합니다. 다음은 스트림의 중간 연산 예제입니다.

  1. filter: 조건에 맞는 요소를 선택합니다.

    Stream<Integer> stream = numbers.stream().filter(n -> n % 2 == 0);
  2. map: 요소를 변환합니다.

    Stream<Integer> stream = numbers.stream().map(n -> n * 2);
  3. distinct: 중복된 요소를 제거합니다.

    Stream<Integer> stream = numbers.stream().distinct();

최종 연산

최종 연산은 스트림의 데이터를 처리하고 결과를 반환하는 작업을 수행합니다. 다음은 스트림의 최종 연산 예제입니다.

  1. count: 요소의 개수를 반환합니다.

    long count = stream.count();
  2. forEach: 각 요소를 출력합니다.

    stream.forEach(System.out::println);
  3. collect: 요소를 수집하여 새로운 컬렉션을 생성합니다.

    List<Integer> result = stream.collect(Collectors.toList());

스트림 병렬 처리

스트림은 병렬 처리를 통해 작업을 수행할 수 있습니다. 병렬 처리를 활성화하려면 parallel 메소드를 호출하면 됩니다.

IntStream stream = numbers.stream().parallel();

병렬 처리를 통해 스트림의 연산을 동시에 처리할 수 있으므로, 대용량 데이터를 처리할 때 성능을 향상시킬 수 있습니다.

마무리

이 글에서는 자바 스트림(Stream)에 대해 소개하고, 스트림을 생성하고 연산하는 방법에 대해 알아보았습니다. 스트림은 컬렉션 데이터를 일관성 있게 처리하고, 병렬 처리를 통해 성능을 개선할 수 있는 강력한 도구입니다. 스트림을 잘 활용하여 보다 효율적인 자바 프로그램을 개발하는데 도움이 되길 바랍니다.

댓글