你好朋友,
在本教程中,我们将看到如何使用Java 8 Comparator.nullsFirst在列表中的项目很少为空时如何对项目列表进行排序,以便将null视为列表中的最小元素。
–什么是比较器
– nullsFirst方法在Comparator中做什么
–排序具有非空名称的字符串列表 –不使用nullsFirst排序具有名称和Null的字符串列表 –通过使用nullsFirst方法对列表进行排序来解决上述问题 –对不包含空值的自定义对象列表进行排序 –在不使用nullsFirst的情况下对具有null的Custom对象列表进行排序 –通过使用nullsFirst方法对列表进行排序来解决上述问题 –排序雇员姓名为空的列表
![](https://i-blog.csdnimg.cn/blog_migrate/e6fbffe07cc6cb8d0aa576ba99109212.png)
比较器是一个FunctionalInterface,具有以下抽象方法
int比较(T
o1,T
o2);
因此,如果要排序,请说出您的列表。您可以创建一个实现Comparator接口的compare方法的类,其中可以定义排序的逻辑,然后将此比较器传递给list.sort()方法,然后它将根据您的排序定义的逻辑。
另外,您可以将lambda函数(实现Comparator的compare方法)传递给list.sort()方法,而不是创建一个单独的类来实现Comparator接口。
nullsFirst方法在Comparator中做什么?
在Java 8中,Comparator接口中添加了许多默认和静态方法。
nullsFirst是Comparator接口中定义的静态方法之一,具有以下签名:
上市
静态 <T> Comparator <T> nullsFirst(Comparator <?
超级 T> 比较器)
那怎么办呢?
–返回零友好的比较器,该比较器认为null小于非null。
–当两个对象均为空时,它们被视为相等。
–当两者都不为null时,将指定的比较器作为参数传递给nullsFirst方法,以确定排序顺序
–当指定的比较器为null时,返回的比较器将所有非null值视为相等。
要了解nullsFirst的用法,让我们尝试对具有雇员姓名的String列表进行排序,
–首先没有空值
–然后使用空值但不使用nullsFirst
–然后使用null值和nullsFirst
–然后,我们将对自定义Employee对象执行上述步骤
–然后,如果自定义对象中需要根据其进行排序的属性之一为空,那么我们将看到该情况
对具有非空名称的字符串列表进行排序
package com.blogspot.javasolutionsguide; import java.util.Arrays; import java.util.List; import java.util.Comparator; public class ComparatorTestWithListOfNamesWithoutNulls {
public static void main(String[] args) {
List<String> names = Arrays.asList( "Gaurav" , "Tendulkar" , "Suresh" , "Rohit" , "Bumrah" );
System.out.println( "Before Sorting:" );
names.forEach(System.out ::println);
names.sort(Comparator.naturalOrder());
System.out.println( "After Sorting:" );
names.forEach(System.out ::println);
}
}
这是输出:
排序之前:
高拉夫
滕杜尔卡