Server
Java Stream 을 활용한 Sum/Avg/Min/Max 구하기
니용
2022. 9. 11. 17:48
반응형
Stream을 활용하여 합계를 구하는 로직을 작성해보겠습니다.
합계값 (Sum)
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Integer sum1 = numbers.stream().reduce(0, Integer::sum);
System.out.println("sum1 = " + sum1); // 15
int sum2 = numbers.stream().mapToInt(i -> i).sum();
System.out.println("sum2 = " + sum2); // 15
평균값 (Avg)
final OptionalDouble average = numbers.stream().mapToInt(Integer::intValue).average();
final double avgAsDouble = average.getAsDouble();
System.out.println("avgAsDouble = " + avgAsDouble); // 3.0
여기서 나오는 OptionalDouble 은 Optional<Double> 과 같은 개념으로 java.util 에서 임포트가 가능합니다.
최대값 (Max)
final Integer max = numbers.stream().reduce(0, Integer::max);
final OptionalInt max1 = numbers.stream().mapToInt(Integer::intValue).max();
System.out.println("max = " + max); // 1
System.out.println("max1.orElse(0) = " + max1.orElse(0)); // 1 , null이면 0
OptionalInt 도 마찬가지로 Optional<Integer> 을 의미합니다.
최소값 (Min)
final Integer min = numbers.stream().reduce(0, Integer::min);
final OptionalInt min1 = numbers.stream().mapToInt(Integer::intValue).min();
System.out.println("min = " + min); // 5
System.out.println("min1.getAsInt() = " + min1.getAsInt()); // 5
반응형