Một giải pháp với 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
Trong đoạn mã trên, reduce()
trả về dữ liệu trong Optional
định dạng mà bạn có thể chuyển đổi sang int
bằnggetAsInt()
.
Nếu chúng ta muốn so sánh giá trị tối đa với một số nhất định, chúng ta có thể đặt giá trị bắt đầu bằng 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
Trong đoạn mã trên, khi reduce()
với một danh tính (giá trị bắt đầu) làm tham số đầu tiên, nó sẽ trả về dữ liệu có cùng định dạng với danh tính. Với đặc tính này, chúng ta có thể áp dụng giải pháp này cho các mảng khác:
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())
.