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: