Module java.base
Package java.util

# Interface Comparator

=
@FunctionalInterface
public abstract interface Comparator<T>

## Methods

- =
  public abstract int compare(T arg0, T arg1)
- =
  public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U> arg0)
- =
  public static <T, U> java.util.Comparator<T> comparing(java.util.function.Function<? super T, ? extends U> arg0, java.util.Comparator<? super U> arg1)
- =
  public static <T> java.util.Comparator<T> comparingDouble(java.util.function.ToDoubleFunction<? super T> arg0)
- =
  public static <T> java.util.Comparator<T> comparingInt(java.util.function.ToIntFunction<? super T> arg0)
- =
  public static <T> java.util.Comparator<T> comparingLong(java.util.function.ToLongFunction<? super T> arg0)
- =
  public abstract boolean equals(java.lang.Object arg0)
- =
  public static <T> java.util.Comparator<T> naturalOrder()
- =
  public static <T> java.util.Comparator<T> nullsFirst(java.util.Comparator<? super T> arg0)
- =
  public static <T> java.util.Comparator<T> nullsLast(java.util.Comparator<? super T> arg0)
- =
  public static <T> java.util.Comparator<T> reverseOrder()
- =
  public default java.util.Comparator<T> reversed()
- =
  public default java.util.Comparator<T> thenComparing(java.util.Comparator<? super T> arg0)
- =
  public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U> arg0)
- =
  public default <U> java.util.Comparator<T> thenComparing(java.util.function.Function<? super T, ? extends U> arg0, java.util.Comparator<? super U> arg1)
- =
  public default java.util.Comparator<T> thenComparingDouble(java.util.function.ToDoubleFunction<? super T> arg0)
- =
  public default java.util.Comparator<T> thenComparingInt(java.util.function.ToIntFunction<? super T> arg0)
- =
  public default java.util.Comparator<T> thenComparingLong(java.util.function.ToLongFunction<? super T> arg0)

## Summary

No differences.