Search code examples
javajava-8java-stream

How to find maximum value from a stream of Integer values in Java 8


I have a list of Integer values named list, and from the list.stream() I want the maximum value.

What is the simplest way? Do I need a comparator?


Solution

  • You may either convert the stream to IntStream:

    OptionalInt max = list.stream().mapToInt(Integer::intValue).max();
    

    Or specify the natural order comparator:

    Optional<Integer> max = list.stream().max(Comparator.naturalOrder());
    

    Or use reduce operation:

    Optional<Integer> max = list.stream().reduce(Integer::max);
    

    Or use collector:

    Optional<Integer> max = list.stream().collect(Collectors.maxBy(Comparator.naturalOrder()));
    

    Or use IntSummaryStatistics:

    int max = list.stream().collect(Collectors.summarizingInt(Integer::intValue)).getMax();