Java 8 Streams Java Java API
java.util.stream.Stream
Optional<T> max(Comparator<? super T> comparator)
This terminal operation returns the maximum 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 MaxExample { public static void main(String... args) { String[] s = {"one", "two", "three", "four"}; Optional<String> max = Arrays.stream(s) .max(String::compareTo); if (max.isPresent()) { System.out.println(max.get()); } }}
two
This example compares the last character.
package com.logicbig.example.stream;import java.util.Arrays;import java.util.Optional;public class MaxExample2 { public static void main(String... args) { String[] s = {"one", "two", "three", "four"}; Optional<String> max = Arrays.stream(s).max((s1, s2) -> Character.compare(s1.charAt(s1.length() - 1), s2.charAt(s2.length() - 1))); if(max.isPresent()){ System.out.println(max.get()); } }}
four
Using Stream#max method and comparing it with equivalent reduce operation:
package com.logicbig.example;import java.util.Optional;import java.util.stream.Stream;public class MaxExample { public static void main (String[] args) { runMax(); runEquivalentReduce(); } private static void runMax () { String s = Stream.of("banana", "pie", "apple") .max(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()); }}
piepie