스트림

김지원·2023년 12월 12일
0

Stream - 자바8부터 지원하는 데이터 집합을 읽는 객체
컬렉션에 들어있는 데이터 처리를 매우 간결하게 할 수 있다.
루프문을 사용하지 않고도 선언형으로 컬렉션 데이터를 쉽게 처리할 수 있다.
스트림은 중간처리와 최종처리를 파이프라인으로 해결한다.

  • 파이프라인 : 여러 개의 스트림이 파이프처럼 연결되어 있는 구조

스트림을 3단계로 분석하자면
1. 생성 : 스트림 인스턴스 생성
2. 가공 : 필터링, 맵핑 등 원하는 결과 만들어내기
3. 결과 : 최종 결과 만들기

아래 코드는 스프링부트 컨트롤러에서 사용하는 예시이다.

ex1)

 @GetMapping("/api/articles")
    public ResponseEntity<List<ArticleResponse>> findAllArticles() {
        List<ArticleResponse> articles = blogService.findAll()
                .stream()
                .map(ArticleResponse::new)
                .toList();

        return ResponseEntity.ok()
                .body(articles);
    }

ex1)에서 보이는 map 같은 함수는 Stream API에서 제공하는 함수이다.

또한

ex2)

List<String> x = Arrays.asList(new String[]{"a", "b", "d", "c"});
List<String> y = x.stream().sorted().collect(Collectors.toList());

System.out.println(x); // [a, b, d, c]
System.out.println(y); // [a, b, c, d]

ex2)처럼 기존 배열을 망치지 않고 따로 정렬하는 것이 가능하다.

그 외에도
빌더를 사용해서 스트림에 원하는 값을 직접 넣는 등 다양한 컨트롤이 가능하다.

0개의 댓글