public static <T, U extends Comparable<? super U>> Comparator<T> comparing (
Function<? super T, ? extends U> keyExtractor)
参数:将一个 (非Comparable) 的对象 转换为一个 Comparable 对象的 Function!
返回值:一个 T 的比较器,其比较方式为参数中获取到的 Comparable 对象的默认比较方式。
使用场景:List<Person> 排序,需要的排序规则为:按 Person 中的 name 的自然排序方式。
public static <T, U> Comparator<T> comparing (
Function<? super T, ? extends U> keyExtractor, Comparator<? super U> keyComparator)
参数:
第一个:将一个 T 类型的对象 转换为 U 类型的对象。
第二个:定义一个关于 U 类型对象的比较方式。
返回值:一个 T 的比较器,其比较方式为第二个参数定义的比较方式。
使用场景:同上,但想要自定义比较规则。
public static<T> Comparator<T> comparingDouble(ToDoubleFunction<? super T> keyExtractor)
public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor)
public static <T> Comparator<T> comparingLong(ToLongFunction<? super T> keyExtractor)
与上面的方法类型,只是它们分别是为 Double、Integer、Long 定制的方法。
public static <T extends Comparable<? super T>> Comparator<T> naturalOrder()
返回一个自然顺序的比较器,我觉得没什么用,因为本来就是自然顺序的比较(如果说是为了更加明显的表达是自然顺序的话,我觉得还行←_←)。
public static <T> Comparator<T> nullsFirst(Comparator<? super T> comparator)
序列中有 null 值,放在最前面。
public static <T> Comparator<T> nullsLast(Comparator<? super T> comparator)
序列中有 null 值,放在最后面。
default Comparator<T> reversed()
返回当前比较器的逆序比较器。
public static <T extends Comparable<? super T>> Comparator<T> reverseOrder()
返回自然顺序的逆序比较器。
thenComparing 方法:按多个条件排序。
Comparator 详细(https://www.jianshu.com/p/50b561044c60)