Reduce Stream by the given accumulator:
Stream.of(1, 5, 10, 300, 877124, 20, 1, 2, 0)
.reduce((o1, o2) ->
o1 > o2 ? o1 : o2
).get()
//Result: 877124
...
.reduce((satelliteImage, satelliteImage2) ->
satelliteImage.hasLessCloudCoverageThan(satelliteImage2.getCloudCoverage()) ? satelliteImage : satelliteImage2)
...