// education

스트림 API(Stream API)를 활용한 데이터 파이프라인

컬렉션이나 배열의 데이터 요소들을 루프문 없이 선언형 방식으로 가공, 필터링, 변환, 집계할 수 있는 스트림 API(Stream API) 파이프라인을 학습합니다.


1. 스트림 API 용어 사전 (Glossary)


2. 스트림 파이프라인 실전 가공 예제

import java.util.*;
import java.util.stream.Collectors;

class Person {
    String name;
    int age;
    public Person(String name, int age) { this.name = name; this.age = age; }
    public String getName() { return name; }
    public int getAge() { return age; }
}

public class StreamExample {
    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
            new Person("홍길동", 25),
            new Person("이순신", 45),
            new Person("강감찬", 30),
            new Person("유관순", 18)
        );

        // [요구사항] 나이가 20세 이상인 사람들의 이름을 추출하여 성인 목록 리스트로 만들기
        List<String> adultNames = people.stream()
            .filter(p -> p.getAge() >= 20)      // 중간 연산: 20세 이상 필터링
            .map(Person::getName)               // 중간 연산: 이름만 추출 (타입 변환)
            .sorted()                          // 중간 연산: 가나다순 정렬
            .collect(Collectors.toList());      // 최종 연산: List 컬렉션으로 수집

        System.out.println("성인 회원 명단: " + adultNames);
    }
}

3. 자주 묻는 질문 (Q&A)

Q. 스트림을 한 번 최종 연산한 후 다시 재사용할 수 있나요? A. 안 됩니다! 스트림은 1회용(Single-use)이므로 최종 연산이 호출되어 닫힌 스트림은 재사용이 불가능하며, 필요하다면 새 스트림을 다시 생성해야 합니다.

← 이전자바 람다식(Lambda Expression)과 함수형 인터페이스 다음 →자바 멀티스레딩(Multithreading)과 동시성 제어