[Java] Stream API 활용 - filter, max&min, reduce

해니·2025년 3월 24일
0

Java

목록 보기
27/34
post-thumbnail



Stream 이란?

  • Java 8부터 추가된 기능으로, 컬렉션과 배열과 같은 데이터 소스에서 요소를 처리하고 다양한 연산을 수행할 수 있는 API
  • 함수형 프로그래밍의 개념을 기반으로 만들어졌기 때문에 람다식과 함께 사용할 수 있다.
  • 생성, 중간 연산, 최종 연산으로 구성된다.
    • 생성 연산 : Stream 객체를 생성하는 역할
    • 중간 연산 : Stream 객체의 요소를 처리하거나 필터링하는 등의 작업을 수행
    • 최종 연산 : Stream 객체의 요소를 이용하여 결과를 도출하는 작업을 수행



📗 Collection(컬렉션)

  • 많은 수의 데이터를 그 사용 목적에 적합한 자료구조로 묶어 하나로 그룹화한 객체
  • 아래와 같은 자료구조 유형에 따라 구분된다.
    • List : 목록처럼 데이터를 순서에 따라 관리
    • Set : 중복이 허용되지 않는 데이터를 관리
    • Map : 데이터를 Key와 Value로 짝을 이루어 관리하며, Key 값은 중복을 허용하지 않는다.
    • Queue : 데이터를 FIFO 방식으로 관리한다.
    • Stack : 데이터를 LIFO 방식으로 관리



Stream 활용 예제



필요한 데이터만 필터링

  • filter() 연산
    • 특정 조건을 만족하는 요소만을 걸러내는 작업을 수행한다.

// 특정 일련번호 값과 일치하는 데이터만 필터링한다.
long storeSeq = 1234;
List<storeResult> storeList = queryGetStoreList.stream()
		.filter(store -> store.getSeq == storeSeq)
        .collect(Collectors.toList());



최대값, 최소값 찾기

  • max() 연산
    • 해당 스트림의 요소 중에서 가장 큰 값을 가지는 요소를 참조하는 Optional 객체를 반환한다.
  • min() 연산
    • 해당 스트림의 요소 중에서 가장 작은 값을 가지는 요소를 참조하는 Optional 객체를 반환한다.



// 가장 늦은 생일 찾기
Optional<Date> birthdayList = queryGetBirthdayList.stream()
			.map(GetBirthdayListResult::getBirthday)
            .max(Comparator);



합계 구하기

  • recude() 연산
    • 첫 번째와 두 번째 요소를 가지고 연산을 수행한 뒤, 그 결과와 세 번째 요소를 가지고 또 다시 연산을 수행한다.
    • 해당 스트림의 모든 요소를 연산하여 그 결과를 반환한다.
// 금액의 총 합계 구하기
BigDecimal sumAmount = amountList.stream()
	.map(GetAmountListResult::getAmount)
    .reduce(BigDecimal.ZERO, BigDecimal::add);






출처

[JAVA] Stream에 대한 사용법 및 내용 정리
[Java] Java에서 Collection(컬렉션)이란 ?
[Java] 스트림(Stream)의 최종 연산 - 요소의 통계 : count(), max(), min()
[Java] 스트림(Stream)의 최종 연산 - 요소의 소모 : reduce()

profile
💻 ⚾️ 🐻

0개의 댓글