The thenComparingLong(java.util.function.ToLongFunction) method of Comparator Interface in Java returns a lexicographic-order comparator with a function that extracts a Long sort key.
Syntax:
default Comparator <T> thenComparingLong(
ToLongFunction <T> keyExtractor)
Parameters: This method accepts keyExtractor which is the function used to extract the Long sort key.
Return value: This method returns a lexicographic-order comparator composed of this and then the Long sort key.
Exception: This method throws NullPointerException if the argument is null.
Below programs illustrate thenComparingLong(java.util.function.ToLongFunction) method:
Program 1:
// Java program to demonstrate Comparator// thenComparingLong(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)    {        List<Users> list = createUsers();        System.out.printf("before sort: %s%n", list);        Collections.sort(list,                         Comparator                             .comparing(Users::getDepartment)                             .thenComparingLong(Users::getId));        System.out.printf("after sort: %s%n", list);    }      private static List<Users> createUsers()    {        return Arrays.asList(            new Users(12311, "ME"),            new Users(10211, "CSE"),            new Users(33111, "CSE"),            new Users(21000, "IT"),            new Users(12133, "IT"),            new Users(21445, "CSE"));    }      private static class Users {        private long id;        private String department;          public Users(long id, String department)        {            this.id = id;            this.department = department;        }          public long getId()        {            return id;        }          public void setId(long id)        {            this.id = id;        }          public String getDepartment()        {            return department;        }          public void setDepartment(String department)        {            this.department = department;        }          @Override        public String toString()        {            return department + " - " + id;        }    }} |
The output printed on console of IDE is shown below.
Output:
You can see in example first sorting is done on department wise and if the department is same then ID wise.
Program 2:
// Java program to demonstrate Comparator// thenComparingLong(ToLongFunction) method  import java.util.Arrays;import java.util.Comparator;import java.util.List;  public class GFG {    public static void main(String... args)    {          List<String> list            = Arrays.asList("KKR", "CSK",                            "MI", "KXIP", "RCB",                            "SRH", "DC", "RR");          try {              // apply thenComparingLong            Comparator.comparing(list::get)                .thenComparingLong(null);        }        catch (Exception e) {              System.out.printf("Exception:" + e);        }    }} |
The output printed on console is shown below.
Output:

