Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 리스트의 평균값 구하는 방법 완벽 정리

Java 프로그래밍을 하다 보면 숫자 리스트(List)의 평균값을 계산해야 하는 경우가 자주 발생합니다. 이번 글에서는 Java에서 리스트의 평균을 구하는 두 가지 대표적인 방법을 예제 코드와 함께 살펴보겠습니다.

방법 1: Stream API와 IntSummaryStatistics 활용

Java 8부터 도입된 Stream API를 사용하면 간결하고 가독성 높은 코드로 평균값을 구할 수 있습니다. IntSummaryStatistics 클래스는 평균뿐만 아니라 합계, 최솟값, 최댓값, 개수 등 다양한 통계 정보를 한 번에 제공합니다.

예제 코드

import java.util.*;
public class Demo {
   public static void main(String []args){
      List<Integer> list = Arrays.asList(10, 20, 50, 100, 130, 150, 200, 250, 500);
      IntSummaryStatistics summaryStats = list.stream()
      .mapToInt((a) -> a)
      .summaryStatistics();
      System.out.println("Average of a List = "+summaryStats.getAverage());
   }
}

실행 결과

Average of a List = 156.66666666666666

코드 설명

stream()으로 리스트를 스트림으로 변환한 후, mapToInt()를 통해 Integer 스트림을 기본형 int 스트림(IntStream)으로 변환합니다. 그다음 summaryStatistics() 메서드를 호출하면 통계 객체가 생성되며, getAverage() 메서드로 평균값을 손쉽게 얻을 수 있습니다.

방법 2: 반복문과 직접 계산 활용

Stream API를 사용하지 않고 전통적인 for-each 반복문으로 합계를 구한 뒤, 리스트 크기로 나누어 평균을 계산할 수도 있습니다. 이 방법은 빈 리스트 여부를 먼저 확인하여 오류를 방지하는 점이 특징입니다.

예제 코드

import java.util.*;
public class Demo {
   public static void main(String []args){
      List<Integer> list = Arrays.asList(10, 20, 50, 100, 130, 150, 200, 250, 500);
      int sum = 0;
      for (int i : list) {
         sum+=i;
      }
      if(list.isEmpty()){
         System.out.println("Empty list!");
      } else {
         System.out.println("Average = " + sum/(float)list.size());
      }
   }
}

실행 결과

Average = 156.66667

코드 설명

for-each 문으로 모든 요소를 더해 합계(sum)를 구한 후, (float) 캐스팅을 통해 정수 나눗셈이 아닌 실수 나눗셈이 수행되도록 합니다. 만약 캐스팅 없이 나누면 소수점 이하가 잘린 정수 결과가 반환되므로 주의해야 합니다. 또한 isEmpty() 검사를 통해 빈 리스트일 때 발생할 수 있는 0으로 나누는 상황(ArithmeticException)을 사전에 방지합니다.

두 방법 비교 및 정리

Stream API 방식은 코드가 간결하고 통계 정보를 한 번에 얻을 수 있다는 장점이 있으며, 반복문 방식은 별도의 추가 연산 없이 로직을 명확하게 제어할 수 있다는 장점이 있습니다. 프로젝트의 요구사항과 팀의 코딩 스타일에 맞춰 적절한 방법을 선택하시면 됩니다.