[JAVA] streamApI로 숫자 합산하기
- 코딩/Java
- 2022. 5. 6.
[JAVA] streamApI로 숫자 합산하기
기본형 특화 스트림
- int 요소 : IntStream
- double 요소 : DoubleStream
- long 요소 : LongStream
숫자 스트림의 합계를 계산하는 SUM, 최댓값 요소를 검색하는 MAX
각각 인터페이스는 리듀싱 연산 수행 메서드와 다시 객체 스트림으로 복원하는 기능도 제공한다.
int calories = menu.stream()
.map(Dish::getCalories)
.reduce(0, Integer::sum);
숫자 스트림으로 매핑
- mapToInt, mapToDouble, mapToLong 3가지 메서드를 가장 많이 사용
- mapToInt 메서드는 Dish에서모든 Calories를 가져와 IntStream으로 반환하며 sum 메서드를 이용해 합계를 구할 수 있다.
- 값이 비었을 경우 0을 반환한다.
int calories = menu.stream()
.mapToInt(Dish::getCalories)
.sum();
기본값 OptionalInt
- OptionalInt의 경우 0이라는 기본값이 없기 때문에
- 스트림에 요소가 없을때와 실제로 최댓값이 0인 상황을 구별해야한다.
OptionalInt maxCalories = menu.stream()
.mapToInt(Dish::getCalories)
.max();
int max = maxCalories.orElse(1);
객체 스트림으로 복원
- 객체 스트림으로 복원숫자 스트림을 만든 다음에 원상태인 특화되지 않은 스트림으로 복원
IntStream intStream = menu.stream().mapToInt(Dish::getCalories);
Stream<Integer> stream = intStream.boxed();
'코딩 > Java' 카테고리의 다른 글
[JAVA] List의 null 체크 (with isEmpty()) (0) | 2022.05.14 |
---|---|
[JAVA] 빌더 패턴(Builder Pattern) 사용해야 하는 이유 (0) | 2022.05.11 |
[JAVA] Map null값 체크방법 (0) | 2022.05.05 |
[Java] Timestamped LocalDateTime format 변경 (0) | 2021.09.15 |
[JAVA] 문자열 찾기 (Contains, IndexOf, Matches) (0) | 2020.12.11 |