Java 8 Streams Java Java API
java.util.stream.Stream
Optional<T> min(Comparator<? super T> comparator)
This terminal operation returns the minimum element of this stream according to the provided Comparator. This is a special case of a reduction.
Comparator
package com.logicbig.example.stream;import java.util.Arrays;import java.util.Optional;public class MinExample { public static void main(String... args) { String[] s = {"one", "two", "three", "four"}; Optional<String> min = Arrays.stream(s) .min(String::compareTo); if (min.isPresent()) { System.out.println(min.get()); } }}
four
package com.logicbig.example.stream;import java.util.Arrays;import java.util.Comparator;public class MinExample2 { public static void main(String... args) { String[] s = {"aaaa", "aaa", "a", "aaaaa"}; String str = Arrays.stream(s) .min(Comparator.comparingInt(String::length)) .orElseGet(String::new); System.out.println(str); }}
a
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()); }}
appleapple