In Java Stream API there is a max()
method that is used to get the maximum element of this stream according to
the provided Comparator. In this post we’ll see some examples of the max() method.
For min method in Java Stream, check this post- Java Stream - min() With Examples
Syntax of the Stream.max() method
max()
is a terminal operation and its syntax is as given below-
Optional<T> max(Comparator<? super T> comparator)
Here comparator is an implementation of Comparator to compare elements of this stream.
Method returns an Optional containing the maximum element of the stream or an empty Optional if the stream is empty.
max() method is considered a reduction operation as it takes a sequence of input elements and combines them into a single summary result.
max() method Java examples
1. Finding max value from a stream of numbers.
import java.util.Arrays; import java.util.List; import java.util.Optional; public class StreamMax { public static void main(String[] args) { List<Integer> numList = Arrays.asList(6, 8, 13, 2, 58, 22, 76, 9, 11, 3); Optional<Integer> max = numList.stream().max(Integer::compare); if(max.isPresent()){ System.out.println("Maximum element: " + max.get()); } } }
Output
Maximum element: 76
2. In the following example custom comparator is passed as an argument to the max() method.
public class StreamMax { public static void main(String[] args) { List<Integer> numList = Arrays.asList(6, 8, 13, 2, 58, 22, 76, 9, 11, 3); Optional<Integer> max = numList.stream().max(new MyComparator()); if(max.isPresent()){ System.out.println("Maximum element: " + max.get()); } } } class MyComparator implements Comparator<Integer>{ @Override public int compare(Integer o1, Integer o2) { // TODO Auto-generated method stub return o1.compareTo(o2); } }
Output
Maximum element: 76
Here MyComparator is an implementation of the Comparator where compare method compares two integers. An instance of MyComparator is passed as argument to the max() method.
3. Using max() method with custom object. In the example objects of Employee class are used and the objective is to find max salary using the max() 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; } }
Here max() is used in conjunction with mapToInt() to get the salary part of the employee object which is then passed to the max() to get the max salary. Note that max() method works here without passing any Comparator because mapToInt() returns an IntStream which has a max() method.
import java.util.Arrays; import java.util.List; import java.util.OptionalInt; public class StreamMax { 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 maxEmpSal = empList.stream() .mapToInt(Employee::getSalary) .max(); if(maxEmpSal.isPresent()){ System.out.println("Maximum salary: " + maxEmpSal.getAsInt()); } } }
Output
Maximum salary: 12000
That's all for this topic Java Stream - max() 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