Comparator comparingInt() in Java with examples

The comparingInt(java.util.function.ToIntFunction) method accepts a function as parameter that extracts an int sort key from a type T, and returns a Comparator that compares by that sort key.The returned comparator is serializable if the specified function is also serializable.
Syntax:
static <T> Comparator<T> comparingInt(ToIntFunction <T> keyExtractor)
Parameters: This method accepts a single parameter keyExtractor which is the function used to extract the integer sort key.
Return value: This method returns a comparator that compares by an extracted key
Exception: This method throws NullPointerException if the argument is null.
Below programs illustrate comparingInt(java.util.function.ToIntFunction) method:
Program 1:
// Java program to demonstrate// Comparator.comparingInt(java.util.function.ToIntFunction) method  import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class GFG {    public static void main(String[] args)    {          // create some user objects        User u1 = new User("Aaman", 25);        User u2 = new User("Joyita", 22);        User u3 = new User("Suvam", 28);        User u4 = new User("mahafuj", 25);          // before sort        List<User> list            = Arrays.asList(u2, u1, u4, u3);        System.out.println("Before Sort:");        list.forEach(User                     -> System.out.println("User age "                                           + User.getAge()));          Collections.sort(list,                         Comparator.comparingInt(                             User::getAge));        System.out.println("\nAfterSort:");        list.forEach(User                     -> System.out.println("User age "                                           + User.getAge()));    }}class User implements Comparable<User> {    public String name;    public int age;      public User(String name, int age)    {        this.name = name;        this.age = age;    }      public int compareTo(User u1)    {        return name.compareTo(u1.name);    }      public String getName()    {        return name;    }      public void setName(String name)    {        this.name = name;    }      public int getAge()    {        return age;    }      public void setAge(int age)    {        this.age = age;    }      @Override    public String toString()    {        return "User [name=" + name            + ", age=" + age + "]";    }} |
The output printed on console of IDE is shown below.
Output:
Program 2:
// Java program to demonstrate// Comparator.comparingInt(java.util.function.ToIntFunction) method  import java.util.Arrays;import java.util.Collections;import java.util.Comparator;import java.util.List;public class GFG {    public static void main(String[] args)    {          // before sort        List<Order> list = Arrays.asList(            new Order("A382y482y48", 320),            new Order("Vvekhfbkje2", 242),            new Order("efkhfbekjfbe", 1345),            new Order("bhdhdfaddvad", 230),            new Order("abkasbcjabjc", 100));        System.out.println("Before Sort:");        list.forEach(order -> System.out.println(order));          Collections.sort(list,                         Comparator.comparingInt(                             Order::getValue));        System.out.println("\nAfter Sort:");        list.forEach(order -> System.out.println(order));    }}class Order implements Comparable<Order> {    public String orderNo;    public int value;      public int compareTo(Order o1)    {        return orderNo.compareTo(o1.orderNo);    }      public Order(String orderNo, int value)    {        super();        this.orderNo = orderNo;        this.value = value;    }      @Override    public String toString()    {        return "Order [orderNo=" + orderNo            + ", value=" + value + "]";    }      public String getOrderNo()    {        return orderNo;    }      public void setOrderNo(String orderNo)    {        this.orderNo = orderNo;    }      public int getValue()    {        return value;    }      public void setValue(int value)    {        this.value = value;    }} |
The output printed on console is shown below.
Output:




