Java/컬렉션

[Java]ArrayList 또는 List 최대, 최소, 합계, 평균 구하기

DevStory 2022. 6. 22.

이번 포스팅은 Java의 ArrayList 또는 List에서 최대, 최소, 합계, 평균을 구하는 방법을 소개합니다.


방법 1. IntSummaryStatistics 클래스

java.util 패키지에 존재하는 IntSummaryStatistics 클래스는 최대, 최소, 합계, 평균, 개수 등 다양한 통계 자료를 추출합니다. Java 8 버전 이상을 사용한다면, Stream 클래스와 조합하여 사용할 수 있습니다.

IntSummaryStatistics 클래스에서 지원하는 메서드
getSum(): long 타입의 값인 합계를 반환합니다.
getAverage(): double 타입의 값인 평균을 반환합니다.
getMin(): int 타입의 값인 최솟값을 반환합니다.
getMax(): int 타입의 값인 최댓값을 반환합니다.
getCount(): long 타입의 값인 요소의 수를 반환합니다.

다음 예제는 IntSummaryStatistics 클래스를 사용하여 통계 자료를 구합니다.

public class Main {
  public static void main(String args[]) {
    ArrayList<Integer> intArrayList = new ArrayList<>(
            Arrays.asList(10, 5, 20, 30, 15)
    );

    IntSummaryStatistics statistics = intArrayList
            .stream()
            .mapToInt(num -> num)
            .summaryStatistics();

    System.out.println("합계: " + statistics.getSum());
    System.out.println("평균: " + statistics.getAverage());
    System.out.println("최소: " + statistics.getMin());
    System.out.println("최대: " + statistics.getMax());
    System.out.println("개수: " + statistics.getCount());
  }
}

실행 결과

합계: 80
평균: 16.0
최소: 5
최대: 30
개수: 5

방법 2. Stream API 사용 안함

Stream API를 사용하지 않고 ArrayList의 통계 자료를 구하는 방법을 소개합니다.

합계: 반복문을 사용하여 변수에 값을 누적합니다.
평균: 합계를 ArrayList 요소의 수로 나눕니다.
최소: ArrayList를 sort() 메서드로 정렬 후 0번째 인덱스의 값을 가져옵니다.
최대: ArrayList를 sort() 메서드로 정렬 후 마지막 요소의 값을 가져옵니다.
개수: size() 메서드를 사용합니다.

다음 예제는 위 방법을 사용하여 ArrayList의 통계 자료를 구합니다.

public class Main {
  public static void main(String args[]) {
    ArrayList<Integer> intArrayList = new ArrayList<>(
            Arrays.asList(10, 5, 20, 30, 15)
    );

    int sum = 0;

    // 합계: 반복문을 사용하여 변수에 값을 누적합니다.
    for (int num: intArrayList) {
        sum += num;
    }

    // 최소, 최대: ArrayList를 오름차순으로 정렬합니다.
    Collections.sort(intArrayList);

    // 합계: 반복문을 사용하여 변수에 누적된 값입니다.
    System.out.println("합계: " + sum);

    // 평균: 합계를 요소의 수로 나눕니다.
    System.out.println("평균: " + (double)sum / intArrayList.size());

    // 최소: 오름차순으로 정렬된 ArrayList의 첫 번째 요소를 가져옵니다.
    System.out.println("최소: " + intArrayList.get(0));

    // 최대: 오름차순으로 정렬된 ArrayList의 마지막 요소를 가져옵니다.
    System.out.println("최대: " + intArrayList.get(intArrayList.size() - 1));

    // 개수: size() 메서드를 사용하여 개수를 가져옵니다.
    System.out.println("개수: " + intArrayList.size());
  }
}

실행 결과

합계: 80
평균: 16.0
최소: 5
최대: 30
개수: 5

최솟값과 최댓값을 구하는 또 다른 방법으로 Collections 클래스의 min(), max() 메서드를 사용할 수 있습니다.

 

다음 예제는 Collections 클래스의 min(), max() 메서드를 사용합니다.

public class Main {
  public static void main(String args[]) {
    ArrayList<Integer> intArrayList = new ArrayList<>(
            Arrays.asList(10, 5, 20, 30, 15)
    );

    System.out.println("최소: " + Collections.min(intArrayList));
    System.out.println("최대: " + Collections.max(intArrayList));
  }
}

실행 결과

최소: 5
최대: 30
반응형

댓글