스트림으로 데이터 변환

Java의 입력/출력과 스트림

Alex Liu

Software Development Engineer

스트림으로 데이터 변환

  • 스트림으로 데이터 변환

    • 데이터 형식 변환, 집계, 필터링
    • 결과를 새 컬렉션 유형에 저장(예: ListSet)
    • 지원 컬렉션:
      • 리스트 (예: ArrayList, LinkedList)
      • 세트 (예: HashSet, TreeSet)
      • 맵 (Keys/ValuesStreams로) (예: HashMap, TreeMap)
      • 배열 (Arrays.stream() 사용)
  • 이후 예제에서 사용할 ArrayList names

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

Stream으로 요소 변환

  • 준비: Set, Collectors, Stream 클래스 임포트
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;

// 앞서 만든 `ArrayList` `names`를 `Stream`으로 변환 Stream<String> namesStream = names.stream();
  • 현재 데이터: [Alice, Bob, Charlie, David]
Java의 입력/출력과 스트림

Stream으로 요소 변환 (계속)

// `.map()`으로 각 요소를 대문자로 변환
Stream<String> upperCaseNameStream = namesStream.map(
        name -> name.toUpperCase())
  • 현재 데이터: [ALICE, BOB, CHARLIE, DAVID]
// `.collect()`와 `Collectors.toSet()`으로 변환된 스트림 저장
upperCaseNameStream.collect(Collectors.toSet())
  • 최종 데이터:
    {CHARLIE, ALICE, BOB, DAVID}
    
Java의 입력/출력과 스트림

Stream으로 집계

  • .reduce() 메서드

    • 요소를 하나의 결과로 집계
    • 합계, 연결, 최솟값/최댓값에 유용
  • .reduce()는 두 입력을 받음

    • 초기값: 누적 시작값, 예: 0
    • 이항 연산자: 두 인수를 받는 함수
      • (x, y) -> x + y 의미:
        • x: 누적 합
        • y: 현재 요소
        • 모든 요소를 처리할 때까지 yx에 더함
Java의 입력/출력과 스트림

Stream으로 집계: 예시

  • ArrayList namesStream으로 변환
    Stream<String> stream = names.stream();
    
  • .map()으로 이름 길이로 바꾸고 .reduce()로 합산
    stream
      .map(name -> name.length())
      .reduce(0, (sum, length) -> sum + length);
    
  • 결과: 20
Java의 입력/출력과 스트림

연습해 봅시다!

Java의 입력/출력과 스트림

Preparing Video For Download...