The comparingLong(java.util.function.ToLongFunction) method of Comparator Interface in Java accepts a function as parameter that extracts an long 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> comparingLong(ToLongFunction <T> keyExtractor)
Parameters: This method accepts a single parameter keyExtractor which is the function used to extract the long sort key.
Return value: This method returns a comparator that compares by an extracted key
Exception: This method throws NullPolongerException if the argument is null.
Below programs illustrate comparingLong(java.util.function.ToLongFunction) method:
Program 1:
// Java program to demonstrate Comparator // comparingLong(ToLongFunction) 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" , 25724474 );         User u2 = new User( "Joyita" , 2262848 );         User u3 = new User( "Suvam" , 2824444 );         User u4 = new User( "mahafuj" , 2544244 );           // 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.comparingLong(                              User::getregistrationId));         System.out.println( "\nAfterSort:" );         list.forEach(user -> System.out.println(user));     } }   class User implements Comparable<User> {     public String name;     public long registrationId;       public User(String name, long registrationId)     {         this .name = name;         this .registrationId = registrationId;     }       public int compareTo(User u1)     {         return name.compareTo(u1.name);     }       public String getName()     {         return name;     }       public void setName(String name)     {         this .name = name;     }       public long getregistrationId()     {         return registrationId;     }       public void setregistrationId( long registrationId)     {         this .registrationId = registrationId;     }       @Override     public String toString()     {         return "User [name=" + name             + ", registrationId="             + registrationId + "]" ;     } } |
The output printed on console of IDE is shown below.
Output:
Program 2:
// Java program to demonstrate Comparator // comparingLong(ToLongFunction) 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" , 3204355 ),             new Order( "Vvekhfbkje2" , 2425355 ),             new Order( "efkhfbekjfbe" , 1345435 ),             new Order( "bhdhdfaddvad" , 2305535 ),             new Order( "abkasbcjabjc" , 1005454 ));         System.out.println( "Before Sort:" );         list.forEach(order -> System.out.println(order));           Collections.sort(list,                          Comparator.comparingLong(                              Order::getValue));         System.out.println( "\nAfter Sort:" );         list.forEach(order -> System.out.println(order));     } }   class Order implements Comparable<Order> {     public String orderNo;     public long value;       public int compareTo(Order o1)     {         return orderNo.compareTo(o1.orderNo);     }       public Order(String orderNo, long 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 long getValue()     {         return value;     }       public void setValue( long value)     {         this .value = value;     } } |
The output printed on console is shown below.
Output: