文章目录
前言
根据对象中的某个字段来排序,该字段值可能为空。
正文
1.方法:
1-1.Comparator.nullsFirst():
nullsFirst是Comparator功能接口的静态方法。Comparator.nullsFirstJava 8 中引入的方法,返回一个 null 友好的比较器,它认为 null 小于非 null。从 Java 源代码中找到它的声明。
static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator)
查找方法返回的比较器的工作情况nullsFirst。
1.null 元素被认为小于非 null。
2.当两个元素都为空时,它们被认为是相等的。
3.当两个元素都不为空时,指定Comparator确定顺序。
4.如果指定的比较器为空,则返回的比较器认为所有非空元素相等。
1-2.Comparator.nullsLast():
nullsLast是Comparator功能接口的静态方法。Comparator.nullsLastJava 8 中引入的方法,返回一个 null 友好的比较器,它认为 null 大于非 null。从 Java 源代码中找到它的声明。
static <T> Comparator<T> nullsLast(Comparator<? super T> comparator)
查找方法返回的比较器的工作情况nullsLast。
1.null元素被认为大于non-null。
2.当两个元素都为空时,它们被认为是相等的。
3.当两个元素都不为空时,指定Comparator确定顺序。
4.如果指定的比较器为空,则返回的比较器认为所有非空元素相等。
1-3.Comparator.naturalOrder():
naturalOrder是Comparator功能接口的静态方法。Java 8 中引入的方法,返回一个按自然顺序Comparator.naturalOrder比较对象的比较器。Comparable对于自然排序,一个类需要实现Comparable和定义compareTo方法。对象的集合按照compareTo自然排序的方法进行排序。Java 类如Integer,String和Date实现Comparable接口并覆盖其compareTo方法,它们按字典顺序排序。
static <T extends Comparable<? super T>> Comparator<T> naturalOrder()
1-4.Comparator.reverseOrder:
Comparator.reverseOrder是 Java 8 中引入的一种静态方法,它返回Comparator到以对象集合的反向自然顺序进行排序。对于自然排序,一个类需要实现Comparable和定义compareTo方法。对象的集合按照compareTo自然顺序进行排序。Comparator.reverseOrder颠倒自然顺序。它在内部调用Collections.reverseOrder()并返回Comparator实例。查找Comparator.reverseOrder.
public static <T extends Comparable<? super T>> Comparator<T> reverseOrder() {
return Collections.reverseOrder();
}
2.示例:
正序,空值在后:
list.sort(Comparator.comparing(LoreChannelValue::getPosition, Comparator.nullsLast(Comparator.naturalOrder())));
倒序,空值在前:
list.sort(Comparator.comparing(LoreChannelValue::getPosition, Comparator.nullsFirst(Comparator.reverseOrder())));
参考文献
1. Java Comparator.nullsFirst
2. Java Comparator.nullsLast
3.Java Comparator.naturalOrder
4.Java Comparator.reverseOrder