티스토리 뷰

반응형

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

 

반응형
댓글
공지사항