1. ホーム

[解決済み】Javaでプリミティブの配列の最大値/最小値を検索する

2022-04-08 05:51:59

質問

配列の最小値/最大値を求める関数を書くのは簡単だ。

/**
 * 
 * @param chars
 * @return the max value in the array of chars
 */
private static int maxValue(char[] chars) {
    int max = chars[0];
    for (int ktr = 0; ktr < chars.length; ktr++) {
        if (chars[ktr] > max) {
            max = chars[ktr];
        }
    }
    return max;
}

が、これはすでにどこかで行われているのでは?

どのように解決するのですか?

コモンズ・ラング(変換)+コレクション(最小・最大化)の利用

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

import org.apache.commons.lang.ArrayUtils;

public class MinMaxValue {

    public static void main(String[] args) {
        char[] a = {'3', '5', '1', '4', '2'};

        List b = Arrays.asList(ArrayUtils.toObject(a));

        System.out.println(Collections.min(b));
        System.out.println(Collections.max(b));
   }
}

なお Arrays.asList() は配列をラップしているので、あまりメモリを消費せず、配列の要素に対してコピーを実行することもありません。