Comparator comparingDouble() method in Java with examples

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:




