Building value

Java[스트림(Stream)] 본문

Java

Java[스트림(Stream)]

developer_Michael 2023. 3. 29. 19:09
반응형

자바 8부터 추가된 스트림(Stream)은 컬렉션, 배열 등의 데이터 소스를 쉽게 다룰 수 있는 API입니다. 

 

스트림은 데이터 소스를 추상화하고, 람다식을 이용해서 손쉽게 다양한 연산을 수행할 수 있습니다. 

 

스트림은 일회용이며, 데이터 소스를 변경하지 않습니다.

스트림은 크게 생성, 중간 연산, 최종 연산으로 구분됩니다.

 

생성은 데이터 소스로부터 스트림을 생성하는 것이고, 중간 연산은 스트림의 요소를 가공하거나 변환하는 연산입니다.

 

최종 연산은 중간 연산을 거친 스트림의 요소를 소모하면서 결과를 반환하는 연산입니다.

 

최종 연산이 실행되기 전까지는 중간 연산이 실행되지 않습니다.

import java.util.Arrays;
import java.util.List;

public class StreamExample {
    public static void main(String[] args) {
        List<String> names = Arrays.asList("apple", "banana", "cherry", "durian");

        // 중간 연산 1: filter() 메서드는 조건에 맞는 요소만 걸러내는 연산입니다.
        // 문자열 길이가 5 이상인 요소만 추출합니다.
        names = names.stream()
                .filter(name -> name.length() >= 5)
                .toList();

        // 중간 연산 2: map() 메서드는 요소를 변환하는 연산입니다.
        // 모든 요소에 대문자로 변환합니다.
        List<String> upperCaseNames = names.stream()
                .map(String::toUpperCase)
                .toList();

        // 최종 연산 1: forEach() 메서드는 스트림의 모든 요소에 대해서 작업을 수행합니다.
        upperCaseNames.stream()
                .forEach(System.out::println);

        // 최종 연산 2: count() 메서드는 스트림의 요소 개수를 반환합니다.
        long count = upperCaseNames.stream()
                .count();

        System.out.println("Count: " + count);
    }
}

위 예시 코드에서는 문자열 리스트를 스트림으로 변환하고, 

 

filter(), map() 메서드를 이용해서 요소를 걸러내고 변환했습니다. 

 

마지막으로 forEach() 메서드를 이용해서 각 요소를 출력하고, count() 메서드를 이용해서 요소의 개수를 구했습니다. 

 

이 외에도 스트림은 여러 가지 중간 연산과 최종 연산을 제공하므로, 

 

필요에 따라 적절한 메서드를 선택해서 사용할 수 있습니다.

반응형

'Java' 카테고리의 다른 글

Java[파일&폴더(File&Folder)]  (0) 2023.03.29
Java[스레드(Thread)]  (0) 2023.03.29
Java[람다식(Lambda)]  (0) 2023.03.29
Java[Iterator]  (0) 2023.03.29
Java[HashMap]  (0) 2023.03.29