This terminal operation returns the minimum element of this stream according to the provided Comparator
. This is a special case of a reduction.
Using Stream#min method and comparing it with equivalent reduce operation:
package com.logicbig.example;
import java.util.Optional;
import java.util.stream.Stream;
public class MinExample {
public static void main (String[] args) {
runMin();
runEquivalentReduce();
}
private static void runMin () {
String s = Stream.of("banana", "pie", "apple")
.min(String::compareTo) //dictionary order
.orElse("None");
System.out.println(s);
}
private static void runEquivalentReduce () {
Optional<String> reduce = Stream.of("apple", "banana", "pie")
.reduce((s, s2) -> s.compareTo(s2) <= 0 ? s : s2);
System.out.println(reduce.get());
}
}
Output
apple
apple
Original Post