Solusi dengan reduce()
:
int[] array = {23, 3, 56, 97, 42};
// directly print out
Arrays.stream(array).reduce((x, y) -> x > y ? x : y).ifPresent(System.out::println);
// get the result as an int
int res = Arrays.stream(array).reduce((x, y) -> x > y ? x : y).getAsInt();
System.out.println(res);
>>
97
97
Dalam kode di atas, reduce()
mengembalikan data dalam Optional
format, yang dapat Anda konversi int
olehgetAsInt()
.
Jika kami ingin membandingkan nilai maks dengan angka tertentu, kami dapat menetapkan nilai awal di reduce()
:
int[] array = {23, 3, 56, 97, 42};
// e.g., compare with 100
int max = Arrays.stream(array).reduce(100, (x, y) -> x > y ? x : y);
System.out.println(max);
>>
100
Dalam kode di atas, ketika reduce()
dengan identitas (nilai awal) sebagai parameter pertama, itu mengembalikan data dalam format yang sama dengan identitas. Dengan properti ini, kami dapat menerapkan solusi ini ke array lain:
double[] array = {23.1, 3, 56.6, 97, 42};
double max = Arrays.stream(array).reduce(array[0], (x, y) -> x > y ? x : y);
System.out.println(max);
>>
97.0
Collections.max(Arrays.asList())
.