The nullsLast (java.util.Comparator) method returns comparator that is a null-friendly comparator and considers null values greater than non-null. The null first operates by the following logic:
- The null element is considered to be greater than non-null.
- When both elements are null, then they are considered equal.
- When both elements are non-null, the specified Comparator determines the order.
- If specified comparator is null, then the returned comparator considers all non-null elements equal.
- The returned comparator is serializable if the specified comparator is serializable.
Syntax:
static <T> Comparator<T> nullsLast (Comparator<T> comparator)
Parameters: This method accepts a single parameter comparator which is a Comparator for comparing non-null values
Return value: This method returns a comparator that considers null to be greater than non-null and compares non-null objects with the supplied Comparator.
Below programs illustrate nullsLast(java.util.Comparator) method:
Program 1:
// Java program to demonstrate// Comparator.nullsLast (java.util.Comparator) method  import java.util.Arrays;import java.util.Comparator;  public class GFG {      public static void main(String[] args)    {          // create a collection of an array of names        // also contains nulls        String[] strings = { "aman", "suvam", null,                             "sahil", null };          // print the array        System.out.println("Before sorting: "                           + Arrays.toString(strings));          // apply nullsLast method        // and sort the array        Arrays.sort(strings,                    Comparator.nullsLast(                        Comparator.naturalOrder()));          // print the array        System.out.println("After sorting: "                           + Arrays.toString(strings));    }} |
The output printed on console of IDE is shown below.
Output:
Program 2:
// Java program to demonstrate// Comparator.nullsLast (java.util.Comparator) 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", 25);        User u2 = new User("Joyita", 22);        User u3 = new User("Suvam", 28);        User u4 = new User("mahafuj", 25);          System.out.println("One null Objects");        List<User> list            = Arrays.asList(u1, u2, u3, null, u4);        Collections.sort(list,                         Comparator.nullsLast(                             Comparator.comparing(                                 User::getName)));        list.forEach(user -> System.out.println(user));          System.out.println("\nMore than One null Objects");        list = Arrays.asList(u1, u4, null, u2, u3, null, null);        Collections.sort(list,                         Comparator.nullsLast(                             Comparator.comparing(                                 User::getName)));        list.forEach(user -> System.out.println(user));    }}class User implements Comparable<User> {    public String name;    public int age;      public User(String name, int age)    {        this.name = name;        this.age = age;    }      public int compareTo(User u1)    {        return name.compareTo(u1.name);    }      public String getName()    {        return name;    }      public void setName(String name)    {        this.name = name;    }      public int getAge()    {        return age;    }      public void setAge(int age)    {        this.age = age;    }      @Override    public String toString()    {        return "User [name=" + name            + ", age=" + age + "]";    }} |
The output printed on console is shown below.
Output:
References: https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html#nullsLast(java.util.Comparator)

