The comparingDouble(java.util.function.ToDoubleFunction) method of Comparator Interface in Java accepts a function as parameter that extracts an double 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> comparingDouble( ToDoubleFunction <T> keyExtractor)
Parameters: This method accepts a single parameter keyExtractor which is the function used to extract the double 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 comparingDouble(java.util.function.ToDoubleFunction) method:
Program 1:
// Java program to demonstrate Comparator // comparingDouble(ToDoubleFunction) 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" , 3500.56 );         User u2 = new User( "Joyita" , 4222.99 );         User u3 = new User( "Suvam" , 2832.34 );         User u4 = new User( "mahafuj" , 2522.76 );           // before sort         List<User> list = Arrays.asList(u2, u1, u4, u3);         System.out.println( "Before Sort:" );         list.forEach(user -> System.out.println(user));           Collections.sort(list,                          Comparator.comparingDouble(User::getSalary));         System.out.println( "\nAfterSort:" );         list.forEach(user -> System.out.println(user));     } }   class User implements Comparable<User> {     public String name;     public double salary;       public User(String name, double d)     {         this .name = name;         this .salary = d;     }       public int compareTo(User u1)     {         return name.compareTo(u1.name);     }       public String getName()     {         return name;     }       public void setName(String name)     {         this .name = name;     }       public double getSalary()     {         return salary;     }       public void setSalary( double salary)     {         this .salary = salary;     }       @Override     public String toString()     {         return "User [name=" + name             + ", salary="             + salary + "]" ;     } } |
The output printed on console of IDE is shown below.
Output:
Program 2:
// Java program to demonstrate Comparator // comparingDouble(ToDoubleFunction) 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" , 32684.82 ),             new Order( "Vvekhfbkje2" , 28348.47 ),             new Order( "efkhfbekjfbe" , 47674.49 ),             new Order( "bhdhdfaddvad" , 78449.43 ),             new Order( "abkasbcjabjc" , 10104.43 ));           System.out.println( "Before Sort:" );         list.forEach(order -> System.out.println(order));           Collections.sort(list,                          Comparator.comparingDouble(Order::getValue));         System.out.println( "\nAfter Sort:" );         list.forEach(order -> System.out.println(order));     } }   class Order implements Comparable<Order> {     public String orderNo;     public double value;       public int compareTo(Order o1)     {         return orderNo.compareTo(o1.orderNo);     }       public Order(String orderNo, double 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 double getValue()     {         return value;     }       public void setValue( double value)     {         this .value = value;     } } |
The output printed on console is shown below.
Output: