Close

Java 8 Streams - Stream.max Examples

Java 8 Streams Java Java API 


Interface:

java.util.stream.Stream

java.lang.AutoCloseableAutoCloseablejava.util.stream.BaseStreamBaseStreamjava.util.stream.StreamStreamLogicBig

Method:

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.


Examples


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());
}
}
}

Output

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());
}
}
}

Output

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());
}
}

Output

pie
pie
Original Post




See Also