In Java Stream API there is a min() method that is used to get the minimum element of this stream according to the provided Comparator. In this post we’ll see some examples of the min() method.
Syntax of the Stream.min() method
min is a terminal operation and its syntax is as given below-
Optional<T> min(Comparator<? super T> comparator)
Here comparator argument is an implementation of the Comparator to compare elements of this stream.
Method returns an Optional describing the minimum element of this stream, or an empty Optional if the stream is empty.
Stream.min is considered a special case of a reduction operation as it takes a sequence of input elements and combines them into a single summary result.
min() method Java examples
1. Finding min value from a stream of numbers.
import java.util.Arrays; import java.util.List; import java.util.Optional; public class StreamMin { public static void main(String[] args) { List<Integer> numList = Arrays.asList(7, 9, 14, 1, 59, 23, 77, 10, 12, 4); Optional<Integer> minElement = numList.stream().min(Integer::compare); if(minElement.isPresent()){ System.out.println("Minimum element: " + minElement.get()); } } }
Output
Minimum element: 1
2. In the following example custom comparator is passed as an argument to the min() method to get minimum method as per the passed Comparator.
public class StreamMin { public static void main(String[] args) { List<Integer> numList = Arrays.asList(7, 9, 14, 1, 59, 23, 77, 10, 12, 4); Optional<Integer> minElement = numList.stream().min(new MyComparator()); if(minElement.isPresent()){ System.out.println("Minimum element: " + minElement.get()); } } } class MyComparator implements Comparator<Integer>{ @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }
Output
Minimum element: 1
3. Using Stream.min() method with custom object. In the example, objects of Employee class are used and the objective is to find minimum salary using the min() method of the Java Stream API.
Employee class used is as given here.
public class Employee { private String empId; private int age; private String name; private char gender; private int salary; Employee(String empId, int age, String name, char gender, int salary){ this.empId = empId; this.age = age; this.name = name; this.gender = gender; this.salary = salary; } public String getEmpId() { return empId; } public int getAge() { return age; } public String getName() { return name; } public char getGender() { return gender; } public int getSalary() { return salary; } }
In the example mapToInt() method is used to get the salary part of the employee object which is then passed to the min() to get the minimum salary.
public class StreamMin { public static void main(String[] args) { List<Employee> empList = Arrays.asList(new Employee("E001", 40, "Ram", 'M', 5000), new Employee("E002", 35, "Shelly", 'F', 7000), new Employee("E003", 24, "Mark", 'M', 9000), new Employee("E004", 37, "Rani", 'F', 10000), new Employee("E005", 32, "Anuj", 'M', 12000)); OptionalInt minEmpSal = empList.stream() .mapToInt(Employee::getSalary) .min(); if(minEmpSal.isPresent()){ System.out.println("Minimum salary: " + minEmpSal.getAsInt()); } } }
Output
Minimum salary: 5000
That's all for this topic Java Stream - min() With Examples. If you have any doubt or any suggestions to make please drop a comment. Thanks!
>>>Return to Java Advanced Tutorial Page
Related Topics
You may also like-
No comments:
Post a Comment