最小値、最大値を抽出する方法について
整数の配列
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に繋げることができる。