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

Related Posts

codechachaCopyright ©2019 codechacha