Aşağıdakileri içeren bir çözüm 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
Yukarıdaki kodda, biçimini dönüştürebileceğiniz reduce()
verileri döndürür .Optional
int
getAsInt()
.
Maksimum değeri belirli bir sayıyla karşılaştırmak istiyorsak, bir başlangıç değeri ayarlayabiliriz 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
Yukarıdaki kodda reduce()
, ilk parametre olarak bir kimlikle (başlangıç değeri) olduğunda, verileri kimlikle aynı biçimde döndürür. Bu özellik ile bu çözümü diğer dizilere uygulayabiliriz:
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())
.