[Java] 자바 스트림(Stream) 사용법 및 예제

    [Java] 자바 스트림 사용법 및 예제 알아보기

    Java 8부터 추가된 스트림(Stream)은 자바 컬렉션을 처리하는 기능을 제공합니다. 스트림은 간결하고 가독성이 좋은 코드를 작성할 수 있으며, 병렬 처리를 지원하여 대용량 데이터를 처리할 때 성능을 향상시킬 수 있습니다.

    스트림이란?

    • 람다식을 사용하여 간결하게 코드를 작성할 수 있습니다.
    • 중간 연산과 최종 연산으로 구성되어 있습니다.
    • 지연 연산을 지원하여 필요한 시점까지 연산을 미룰 수 있습니다.
    • 병렬 처리를 지원하여 대용량 데이터를 처리할 때 성능을 향상시킬 수 있습니다.

    사용법 및 예제

    import java.util.Arrays;
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class StreamExample {
        public static void main(String[] args) {
            List<String> words = Arrays.asList("Java", "is", "a", "programming", "language");
            
            // 필터링
            List<String> filteredWords = words.stream()
                                              .filter(s -> s.length() > 2)
                                              .collect(Collectors.toList());
            System.out.println(filteredWords); // [Java, programming, language]
            
            // 매핑
            List<Integer> wordLengths = words.stream()
                                             .map(String::length)
                                             .collect(Collectors.toList());
            System.out.println(wordLengths); // [4, 2, 1, 11, 8]
            
            // 정렬
            List<String> sortedWords = words.stream()
                                            .sorted()
                                            .collect(Collectors.toList());
            System.out.println(sortedWords); // [Java, a, is, language, programming]
            
            // 리듀싱
            int totalLength = words.stream()
                                   .mapToInt(String::length)
                                   .sum();
            System.out.println(totalLength); // 26
        }
    }

    위 예제에서는 Arrays.asList() 메서드를 사용하여 문자열 리스트를 생성합니다. 그리고 stream() 메서드를 사용하여 스트림을 생성합니다. 이후 필터링, 매핑, 정렬, 리듀싱 등의 중간 연산과 최종 연산을 사용하여 스트림을 처리합니다. 위 예제에서는 간단한 예제를 보여주기 위해 컬렉션에 대한 스트림을 생성하였지만, 파일, 네트워크 등 다양한 소스에 대한 스트림을 생성할 수 있습니다.

    댓글

    Designed by JB FACTORY