Stream.min() returns the minimum 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. min() is a terminal operation which combines stream elements and returns a summary result. So, min() is a special case of reduction. The method returns Optional instance.
Syntax :
Optional<T> min(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 minimum element is null.
Example 1 : Minimum from list of Integers.
// Java code for Stream.min() method to get // the minimum element of the Stream // according to the provided Comparator. import java.util.*;   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.min() to get minimum         // element according to provided Integer Comparator         Integer var = list.stream().min(Integer::compare).get();           System.out.print(var);     } } |
Output :
-18
Example 2 : Reverse comparator to get maximum value using min() function.
// Java code for Stream.min() method // to get the minimum element of the // Stream according to provided comparator. import java.util.*;   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.min() with reverse         // comparator to get maximum element.         Optional<Integer> var = list.stream()                     .min(Comparator.reverseOrder());           // IF var is empty, then output will be Optional.empty         // else value in var is printed.         if (var.isPresent()){         System.out.println(var.get());         }         else {             System.out.println( "NULL" );         }               } } |
Output :
25
Example 3 : Comparing strings based on last characters.
// Java code for Stream.min() method // to get the minimum element of the // Stream according to provided comparator. import java.util.*;   class GFG {       // Driver code     public static void main(String[] args)     {           // creating an array of strings         String[] array = { "Geeks" , "for" , "Lazyroar" ,                            "GeeksQuiz" };           // The Comparator compares the strings         // based on their last characters and returns         // the minimum value accordingly.         Optional<String> MIN = Arrays.stream(array).min((str1, str2) ->                     Character.compare(str1.charAt(str1.length() - 1 ),                                       str2.charAt(str2.length() - 1 )));           // If a value is present,         // isPresent() will return true         if (MIN.isPresent())             System.out.println(MIN.get());         else             System.out.println( "-1" );     } } |
Output :
for