Collections.max in Java
February 06, 2022
Find the Java doc of Collections.max
method.
a. Max element is found on the basis of
Comparable
interface implemented by class of collection element. Pass Collection
instance.
static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
Comparable
interface. All elements in the collection must be mutually comparable i.e. e1.compareTo(e2)
must not throw a ClassCastException
.
b. Max element of the collection is found on the basis of specified
Comparator
instance. Pass Collection
and Comparator
instances.
public static <T> T max(Collection<? extends T> coll, Comparator<? super T> comp)
comp.compare(e1, e2)
must not throw a ClassCastException
for any elements e1 and e2 in the collection.
Example-1
CollectionsMax1.javapackage com.concretepage; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionsMax1 { public static void main(String[] args) { List<Integer> numList = new ArrayList<>(); numList.add(10); numList.add(30); numList.add(20); int numMax = Collections.max(numList); System.out.println(numMax); // Output: 30 List<String> strList = new ArrayList<>(); strList.add("Mohan"); strList.add("Ramesh"); strList.add("Mahesh"); String strMax = Collections.max(strList); System.out.println(strMax); // Output: Ramesh } }
Example-2
CollectionsMax2.javapackage com.concretepage; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionsMax2 { public static void main(String[] args) { User u1 = new User("Rohit", 20); User u2 = new User("Vivek", 22); User u3 = new User("Raju", 25); List<User> list = new ArrayList<User>(); list.add(u1); list.add(u2); list.add(u3); User maxUser = Collections.max(list); System.out.println(maxUser.name); // Output: Vivek } } class User implements Comparable<User> { String name; int age; public User(String name, int age) { this.name = name; this.age = age; } @Override public int compareTo(User o) { return name.compareTo(o.name); } }
Example-3
Here we will passComparator
instances to Collection
to find max element.
CollectionsMax3.java
package com.concretepage; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class CollectionsMax3 { public static void main(String[] args) { Person p1 = new Person("Rohit", 20); Person p2 = new Person("Vivek", 22); Person p3 = new Person("Raju", 25); List<Person> list = new ArrayList<Person>(); list.add(p1); list.add(p2); list.add(p3); Comparator<Person> compByName = Comparator.comparing(Person::getName); Person maxUserByName = Collections.max(list, compByName); System.out.println(maxUserByName.getName()); // Output: Vivek Comparator<Person> compByAge = Comparator.comparing(Person::getAge); Person maxUserByAge = Collections.max(list, compByAge); System.out.println(maxUserByAge.getName()); // Output: Raju } } class Person { private String name; private int age; public String getName() { return name; } public int getAge() { return age; } public Person(String name, int age) { this.name = name; this.age = age; } }