Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

우주에서 글을 적어본다

[JAVA] Stream 본문

자바

[JAVA] Stream

우주로 날아간 사람 2023. 2. 27. 11:00

스프링부트로 프로젝트를 진행하는 던 중 리스트를 처리할 때 Stream을 사용하는 것을 많이 보았다.
학교에서는 iterator만 배워서 잘 몰랐는데 이번 기회에 공부해 보려고 한다.
양이 많아서 여기에 정리는 간단하게 할 것이고 그 외는 아래 주소에서 확인하면 된다.

https://futurecreator.github.io/2018/08/26/java-8-streams/

 

Stream
  • Java 8부터 지원하기 시작함
  • elements를 하나씩 순회하며 처리함
  • 람다식을 사용하여 간결하게 작성 가능

검색해 본 결과 스트림의 가장 큰 특징은 위의 세 개이다.

사용법
  1. 스트림 객체 생성
  2. 중간작업 - 가공하기
  3. 최종작업 - 결과 만들기


1. 스트림 객체 생성

배열, 컬렉션, 비어있는 스트림 등을 생성할 수 있다. 

2. 중간작업 - 가공하기

자신이 원하는 데이터만 뽑아 사용할 수 있고 여러 작업은 이어 붙일 수 있다.
대표적인 수행들만 나열하겠다.

  • filter(): 스트림 내 요소들을 하나씩 평가해서 걸러내는 작업
  • map(): 스트림 내 요소들을 하나씩 특정 값으로 변환
  • sorted()

3. 최종작업 - 결과 만들기

  • Calculating
    • sum()
    • count()
    • min()
    • max()
  • Collecting
    • Collectors.toList(): 리스트로 반환
    • Collectors.joining(): 작업한 결과를 하나의 스트링으로 반환
    • Collectors.of(): 필요한 로직이 있을 때 직접 만듦
  • Matching
    • anyMatch(): 하나라도 조건을 만족하는 요소가 있는지
    • allMatch(): 모든 조건을 만족하는 요소가 있는지
    • noneMatch(): 모든 조건을 만족하지 않는 요소가 있는지

이 외에도 더 많은 기능이 있으니 필요 시 공부해 나가야 겠다.