BackEnd 학습/Java

Java(자바) - 스트림

잉아당 2024. 1. 31. 17:39
728x90
  • strame() 으로 스트림 객체를 받아 처리
  • 체인 패턴으로 중간 처리와 최종 처리를 연계하여 사용 가능
    • 최종 처리가 있어야 오리지널 및 중간 처리 스트림이 동작

내부 반복자

  • 컬렉션 바깥에서 가져와 처리하는 외부 반복자와 달리 내부에서 처리하며 병렬 작업이 가능

중간 처리

  • 매핑
    • mapToXXX() : 다른 요소로 변환
      • Function 함수형 인터페이스 사용
      • 람다식으로 표현
    • asXXXStream() : 각 long 혹은 double요소로 변환
    • boxed() : wrapper 클래스로 변환
    • flastMapXXX : 복수 개의 요소들로 변환한 새로운 스트림 리턴
  • 필터링
    • distinct() : 중복 제거
    • filter() : 조건 필터링
      • Predicate 함수형 인터페이스 사용
      • 람다식으로 표현
  • 정렬
    • sorted()
      • 객체의 경우 Comparable 구현하고 있어야 가능
  • 반복
    • peek()
      • Consumer 함수형 인터페이스 사용
      • 람다식으로 사용

최종 처리

  • 반복
    • forEach()
  • 매칭
    • boolean타입을 리턴
    • allMatch() : 모든 요소가 만족하는지 여부
    • anyMatch() : 최소한 하나의 요소가 만족하는지 여부
    • noneMatch() : 모든 요소가 만족하지 않는지 여부
    • 매칭의 함수들은 Predicate 함수형 인터페이스 사용
      • 람다식으로 표현
  • 집계
    • count() : long 리턴
    • sum() : int, long, double 리턴
    • max(), min(), average(), findFirst() : OptionalXXX 리턴
      • OptionalXXX 객체의 경우 getAsXXX()로 최종값 얻을 수있음
    • Optional 객체
      • isPresent() : 집계값이 있는지 여부
      • orElse() : 집계값이 없을 경우 디폴트 값 설정
      • ifPresent() : 집계값이 있을 경우 매개변수 Consumer 람다식이 처리
    • reduce() : 람다식으로 커스텀 집계 가능
    • collect() : 필요한 요소들을 컬렉션으로 반환
      • Collectors.groupingBy() : 그룹핑후 매핑 및 집계를 할 수 있음

'BackEnd 학습 > Java' 카테고리의 다른 글

Java(자바) - 컬렉션 프레임워크  (0) 2024.01.29
Java(자바) - Thread(스레드)  (0) 2024.01.25
Java(자바) - 제너릭  (0) 2024.01.25