最小値、最大値を抽出する方法について
整数の配列
int[] array = { 1, -2, 3, -4, 5, -6, 7, -8, 9, -10 };から最小値と最大値を抽出したい。素直に実装するなら、
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int value : array) {
if (value < min) {
min = value;
}
if (max < value) {
max = value;
}
}とすれば良いが、Java8以降ではStreamを使用してより簡潔に書ける。
int min = Arrays.stream(array).min().getAsInt();
int max = Arrays.stream(array).max().getAsInt();元データが配列ではなくListの場合でも同様にStreamで記述できる。
元データが整数以外のオブジェクトの配列またはListの場合は、
// TODO 元データを準備
List<MyClass> list = new ArrayList<>();
// 例
MyClass min = list.stream().min(Comparator.comparing(list -> list.myGetter())).get();
MyClass max = list.stream().max(Comparator.comparing(list -> list.myGetter())).get();のようにComparatorを記述することによってStreamに繋げることができる。