Class NullCompare<T>

java.lang.Object
org.miaixz.bus.core.compare.NullCompare<T>
Type Parameters:
T - 被比较的对象
All Implemented Interfaces:
Serializable, Comparator<T>
Direct Known Subclasses:
FieldsCompare, FunctionCompare, LocaleCompare, VersionCompare

public class NullCompare<T> extends Object implements Comparator<T>, Serializable
null友好的比较器包装,如果nullGreater,则null > non-null,否则反之。 如果二者皆为null,则为相等,返回0。 如果二者都非null,则使用传入的比较器排序。 传入比较器为null,则看被比较的两个对象是否都实现了Comparable实现则调用Comparable.compareTo(Object)。 如果两者至少一个未实现,则视为所有元素相等。
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Field Details

    • nullGreater

      protected final boolean nullGreater
      是否null最大,排在最后
    • comparator

      protected final Comparator<T> comparator
      实际比较器
  • Constructor Details

    • NullCompare

      public NullCompare(boolean nullGreater, Comparator<? super T> comparator)
      构造
      Parameters:
      nullGreater - 是否null最大,排在最后
      comparator - 实际比较器
  • Method Details

    • compare

      public int compare(T a, T b)
      Specified by:
      compare in interface Comparator<T>
    • thenComparing

      public Comparator<T> thenComparing(Comparator<? super T> other)
      Specified by:
      thenComparing in interface Comparator<T>
    • doCompare

      protected int doCompare(T a, T b)
      不检查null的比较方法 用户可自行重写此方法自定义比较方式
      Parameters:
      a - A值
      b - B值
      Returns:
      比较结果,-1:a小于b,0:相等,1:a大于b