[자바] stream 사용하기

박지운·2023년 7월 10일
0

자바 꽉 자바

목록 보기
2/12

stream이란?

데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메소드를 정의해놓은 것이다.
추상화하였기에 코드의 재사용성이 높아진다. 또한 데이터를 모두 같은 방식으로 다룰 수 있다.

  • 스트림은 데이터 소스를 변경하지 않는다.
  • 스트림은 일회용이다.
  • 스트림은 작업을 내부 반복으로 처리한다.

분류

  • 중간 연산 : 연산 결과가 스트림인 연산, 연속해서 중간 연산이 가능
  • 최종 연산 : 결과가 스트림이 아닌 연산, 스트림의 요소를 소모하므로 단 한번만 가능

중간 연산은 map()과 최종 연산은 reduce()와 collect()가 핵심이라고 한다.

map

스트림의 요소에 저장된 값 중에서 원하는 필드만 뽑아내거나 특정 형태로 변환한다.
다음 코드는 문자열 스트림을 각 문자열의 길이로 이루어진 스트림을 반환한다.

Stream<String> stream = Stream.of("abc", "ab", "abcd", "abcde");
stream.map(s -> s.length())
	.forEach(System.out::println);
   //출력결과
  3
  2
  4
  5

collect()

collect() 메소드는 Collectors 객체에 구현된 방법대로 스트림의 요소를 수집한다. 다양한 방법이 클래스 메소드로 정의되어 있다. toList만 확인하자.
최종 연산에 .collect로, Collector.toList()처럼 메소드를 사용하면 된다.

List<WorryBoard> worries = worryBoardRepository.findByState(false);
    List<WorryResponse>  worriesRes = worries
        .stream()
        .map(WorryResponse::new)
        .collect(Collectors.toList());

profile
앞길막막 전과생

0개의 댓글