Une solution avec reduce():
int[] array = {23, 3, 56, 97, 42};
Arrays.stream(array).reduce((x, y) -> x > y ? x : y).ifPresent(System.out::println);
int res = Arrays.stream(array).reduce((x, y) -> x > y ? x : y).getAsInt();
System.out.println(res);
>>
97
97
Dans le code ci-dessus, reduce()renvoie les données au Optionalformat, que vous pouvez convertir inten getAsInt().
Si nous voulons comparer la valeur maximale avec un certain nombre, nous pouvons définir une valeur de départ dans reduce():
int[] array = {23, 3, 56, 97, 42};
int max = Arrays.stream(array).reduce(100, (x, y) -> x > y ? x : y);
System.out.println(max);
>>
100
Dans le code ci-dessus, lorsqu'il a reduce()une identité (valeur de départ) comme premier paramètre, il renvoie des données dans le même format avec l'identité. Avec cette propriété, nous pouvons appliquer cette solution à d'autres tableaux:
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()).