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)