스트림 소개

Java의 입력/출력과 스트림

Alex Liu

Software Development Engineer

스트림 다루기

  • Java Streams

    • 데이터 컬렉션을 함수형으로 처리하고, 대용량에서 성능 개선
    • 지원 컬렉션:
      • List (예: ArrayList, LinkedList)
      • Set (예: HashSet, TreeSet)
      • Map (Keys/ValuesStreams로) (예: HashMap, TreeMap)
      • 배열 (Arrays.stream() 사용)
  • 이후 예제에 사용할 ArrayList 예시 names

    names: ["Alice", "Bob", "Charlie", "David"]
    
Java의 입력/출력과 스트림

스트림과 람다식 사용

  • 람다식
    • 문법: (parameters) -> { expression }
names.forEach(
    // `name` is a parameter representing each element in the list
    name -> 
        // This is the expression executed for each element.
        System.out.println(name));
Alice 
Bob 
Charlie 
David
Java의 입력/출력과 스트림

스트림 생성

  • 컬렉션을 Stream으로 변환

    • 컬렉션에 .stream() 사용
    • List, Set, Queue 지원
  • Stream 클래스 임포트

    import java.util.stream.Stream;
    
  • 예시 리스트 names를 스트림으로 변환하고 .foreach()로 각 요소 접근
    Stream<String> stream = names.stream();
    stream.forEach(name -> System.out.println(name));
    
Java의 입력/출력과 스트림

스트림으로 데이터 필터링

  • .filter()로 요소 선택
    • 조건과 일치하는 요소만 유지
  • 예시 리스트 names를 스트림으로 변환
    Stream<String> stream = names.stream();
    
  • .filter()A로 시작하는 요소를 걸러 .forEach()로 출력
    stream
      .filter(name -> name.startsWith("A"))
      .forEach(name -> System.out.println(name));
    
  • 필터 결과: Alice
Java의 입력/출력과 스트림

스트림으로 개수 세기

  • .count()로 요소 개수 세기

    • 반환 타입: long
  • 예시 리스트 names를 스트림으로 변환

    Stream<String> stream = names.stream();
    
  • .filter()B로 시작하는 요소를 걸러 .count()로 개수 계산

    long count = names.stream()
      .filter(name -> name.startsWith("B"))
      .count();
    
  • 결과: 1 (Bob 1개만 B로 시작)

Java의 입력/출력과 스트림

스트림 사용 시점

  • Streams를 사용할 때:
    • 대용량 데이터: 성능 부하 감소
    • 함수형 연산: 반복문보다 가독성 높음
    • 필터링/변환: 코드 단순화
  • Streams를 쓰지 말아야 할 때:
    • 원본 컬렉션을 수정해야 할 때
    • 부수 효과가 있는 단순 반복문
Java의 입력/출력과 스트림

Vamos praticar!

Java의 입력/출력과 스트림

Preparing Video For Download...