Java - ArrayList의 최대값, 최소값 찾기

ArrayList의 요소들 중에서 최대 값(max)과 최소 값(min)을 찾는 방법을 소개합니다.

예를 들어, arr이라는 배열이 있을 때, 이 배열의 요소 중에 가장 큰 값은 50이고, 가장 작은 값은 13입니다.

arr = [50, 22, 33, 13, 25]
min = 13
max = 50

1. Collections.max(), min()으로 최대, 최소 값 찾기

Collections.max(), Collections.min()는 인자로 전달된 리스트의 요소들 중에 최대, 최소 값을 찾아 리턴합니다. 가장 간단한 방법으로 이렇게 찾을 수 있습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Example {

    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<>(
                Arrays.asList(50, 22, 33, 13, 25));

        int min = Collections.min(list);
        int max = Collections.max(list);

        System.out.println("min: " + min);
        System.out.println("max: " + max);
    }
}

Output:

min: 13
max: 50

2. Collections.sort()로 최대, 최소 값 찾기

최대, 최소 값 찾는 것과 함께 정렬도 해야한다면 Collections.sort()를 이용할 수 있습니다.

sort()는 리스트를 오름차순으로 정렬하는데, index 0의 요소가 최소 값이 되고 마지막 index의 요소가 최대 값이 됩니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Example1 {

    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<>(
                Arrays.asList(50, 22, 33, 13, 25));

        Collections.sort(list);

        int min = list.get(0);
        int max = list.get(list.size() - 1);

        System.out.println("min: " + min);
        System.out.println("max: " + max);
    }
}

Output:

min: 13
max: 50

3. IntSummaryStatistics로 최대, 최소 값 찾기

IntSummaryStatistics는 Integer Stream의 데이터의 최대, 최소, 합, 평균 등에 대한 정보가 있는 클래스입니다.

다음과 같이 Stream을 이용하여 IntSummaryStatistics 객체를 만들 수 있고, 여기서 최대, 최소 값을 가져올 수 있습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.IntSummaryStatistics;

public class Example1 {

    public static void main(String[] args) {

        ArrayList<Integer> list = new ArrayList<>(
                Arrays.asList(50, 22, 33, 13, 25));

        IntSummaryStatistics stats = list.stream()
                .mapToInt(Integer::intValue)
                .summaryStatistics();

        System.out.println("sum: " + stats.getSum());
        System.out.println("average: " + stats.getAverage());
        System.out.println("min: " + stats.getMin());
        System.out.println("max: " + stats.getMax());
    }
}

Output:

sum: 143
average: 28.6
min: 13
max: 50
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha