Stream min() method in Java with Examples

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



