Stream API 고급연산

urur-27·2025년 2월 19일
0

StreamAPI

목록 보기
5/6

중간연산

distinct()

  • 중복 요소 제거를 위한 중간 연산
  • equals()hashCode()가 제대로 구현된 객체라면, 해당 객체의 중복 여부가 올바르게 판단된다.

sorted()

  • 스트림 요소를 정렬하는 중간 연산
  • 기본적으로 오름차순 정렬(Comparable 구현체 필요)
  • 별도의 Comparator를 인자로 넣어 사용자 정의 정렬도 가능

flatMap()

  • 다차원(중첩) 구조1차원 스트림으로 평면화(Flattens)하는 중간 연산
  • 예: List<List<String>>처럼 중첩 리스트를 모두 단일 스트림으로 펼쳐 처리하고 싶을 때 유용
  • flatMap()은 각 요소(서브 리스트 등)를 스트림으로 변환한 뒤, 모든 스트림을 하나로 이어붙인다.

peek()

  • 중간 연산으로, 스트림을 거치는 요소를 중간에 확인하거나(로그) 부수 효과를 주입하기 위해 사용
  • 주로 디버깅 목적이 많으며, 본래 스트림의 요소나 파이프라인에 변화를 주는 것은 권장되지 않는다(부수 효과 주의).

collect() 기본 활용

  • collect()최종 연산으로, 스트림의 모든 요소를 어떤 형식(컬렉션, 문자열, Map 등)으로 모으는 기능을 제공한다.
  • 보통 Collectors 클래스의 정적 메서드를 이용해 구체적인 방법을 지정한다.
  • 예: Collectors.toList(), Collectors.toSet(), Collectors.joining(), 등

toList(), toSet()

가장 단순하고 자주 쓰이는 수집 방법으로, 스트림 결과를 ListSet으로 모을 수 있다.

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CollectToListExample {
    public static void main(String[] args) {
        List<String> data = Arrays.asList("a", "b", "c", "b");

        List<String> result = data.stream()
                .distinct()
                .collect(Collectors.toList());

        System.out.println("Result list: " + result);
    }
}

실행 결과

Result list: [a, b, c]
  • 중복 제거(distinct) 후, List로 수집한다.
profile
끄아악

0개의 댓글