Java Comparator nullsFirst()方法及示例

Java Comparator nullsFirst()方法及示例

nullsFirst( java.util.Comparator ) 方法返回比较器,该比较器是一个对空值友好的比较器,认为空值小于非空值。null优先的操作逻辑如下。

  1. null元素被认为是小于非null的。
  2. 当两个元素都是null时,那么它们被认为是相等的。
  3. 当两个元素都是非空的时候,指定的比较器决定了顺序。
  4. 如果指定的比较器是空的,那么返回的比较器认为所有非空的元素都是相等的。
  5. 如果指定的比较器是可序列化的,那么返回的比较器就是可序列化的。

语法

static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator)
Java

参数: 该方法接受一个单参数 比较器 ,它是一个用于比较非空值的比较器。

返回值: 该方法返回一个认为null小于非null的比较器,并将非null对象与提供的比较器进行比较。

下面的程序说明了nullsFirst(java.util.Comparator)方法:

程序1 :

// Java program to demonstrate
// Comparator.nullsFirst(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 contain nulls
        String[] strings = { "aman", "suvam",
                             null, "sahil",
                             null };
  
        // print the array
        System.out.println("Before sorting: "
                           + Arrays.toString(strings));
  
        // apply nullsFirst method
        // and sort the array
        Arrays.sort(strings,
                    Comparator.nullsFirst(
                        Comparator.naturalOrder()));
  
        // print the array
        System.out.println("After sorting: "
                           + Arrays.toString(strings));
    }
}
Java

打印在IDE控制台的输出如下。

输出:

Java中的比较器nullsFirst()方法及示例

程序2 :

// Java program to demonstrate
// Comparator.nullsFirst(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.nullsFirst(
                             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.nullsFirst(
                             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 + "]";
    }
}
Java

打印在控制台的输出如下。

输出:

Java中的比较器nullsFirst()方法及示例

参考资料: https://docs.oracle.com/javase/10/docs/api/java/util/Comparator.html#nullsFirst(java.util.comparator)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册