Open In App
Related Articles

Stream.max() method in Java with Examples

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report
Stream.max() returns the maximum element of the stream based on the provided Comparator. A Comparator is a comparison function, which imposes a total ordering on some collection of objects. max() is a terminal operation which combines stream elements and returns a summary result. So, max() is a special case of reduction. The method returns Optional instance. Syntax :
Optional<T> max(Comparator<? super T> comparator)

Where, Optional is a container object which
may or may not contain a non-null value 
and T is the type of objects
that may be compared by this comparator
Exception : This method throws NullPointerException if the maximum element is null. Example 1 :
// Implementation of Stream.max()
// to get the maximum element
// of the Stream according to the
// provided Comparator.
import java.util.*;
import java.util.Optional;
import java.util.Comparator;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a list of integers
        List<Integer> list = Arrays.asList(-9, -18, 0, 25, 4);
  
        System.out.print("The maximum value is : ");
  
        // Using stream.max() to get maximum
        // element according to provided Comparator
        // and storing in variable var
        Integer var = list.stream().max(Integer::compare).get();
  
        System.out.print(var);
    }
}

                    
Output :
The maximum value is : 25
Example 2 :
// Implementation of Stream.max()
// to get the maximum element
// of the Stream according to the
// provided Comparator.
import java.util.*;
import java.util.Optional;
import java.util.Comparator;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a list of integers
        List<Integer> list = Arrays.asList(-9, -18, 0, 25, 4);
  
        // Using stream.max() to get maximum
        // element according to provided Comparator
        // Here, the smallest element in list
        // will be stored in variable var
        Optional<Integer> var = list.stream()
                     .max(Comparator.reverseOrder());
  
        // If a value is present, isPresent()
        // will return true, else display message
        if (var.isPresent()) {
            System.out.println(var.get());
        }
        else {
            System.out.println("-1");
        }
    }
}

                    
Output :
-18
Example 3 :
// Implementation of Stream.max()
// to get the maximum element
// of the Stream according to the
// provided Comparator.
import java.util.*;
import java.util.Optional;
import java.util.Comparator;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // Creating a list of Strings
        List<String> list = Arrays.asList("G", "E", "E", "K",
                                          "g", "e", "e", "k");
  
        // using Stream.max() method with Comparator
        // Here, the character with maximum ASCII value
        // is stored in variable MAX
        String MAX = list.stream().max(Comparator.
                       comparing(String::valueOf)).get();
  
        // Displaying the maximum element in
        // the stream according to provided Comparator
        System.out.println("Maximum element in the "
                           + "stream is : " + MAX);
    }
}

                    
Output :
Maximum element in the stream is : k
Example 4 :
// Implementation of Stream.max()
// to get the maximum element
// of the Stream according to the
// provided Comparator.
import java.util.*;
import java.util.Optional;
import java.util.Comparator;
  
class GFG {
  
    // Driver code
    public static void main(String[] args)
    {
  
        // creating an array of strings
        String[] array = { "Geeks", "for", "GeeksforGeeks",
                           "GeeksQuiz" };
  
        // Here, the Comparator compares the strings
        // based on their last characters and returns
        // the maximum value accordingly
        // The result is stored in variable MAX
        Optional<String> MAX = Arrays.stream(array).max((str1, str2) ->  
                       Character.compare(str1.charAt(str1.length() - 1), 
                                       str2.charAt(str2.length() - 1)));
  
        // If a value is present,
        // isPresent() will return true
        if (MAX.isPresent()) 
            System.out.println(MAX.get());        
        else 
            System.out.println("-1");        
    }
}

                    
Output :
GeeksQuiz


Last Updated : 06 Dec, 2018
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads