Что такое метод compare в Java и откуда он происходит?

«Что такое метод compare в Java и откуда он происходит?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метод int compare(T o1, T o2) объявлен в интерфейсе java.util.Comparator<T>. Он используется для определения порядка двух объектов.

Контракт метода:

  • Возвращает отрицательное целое число, если o1 меньше o2.
  • Возвращает ноль, если o1 равен o2.
  • Возвращает положительное целое число, если o1 больше o2.

Практический пример:

// Компаратор для целых чисел (естественный порядок)
Comparator<Integer> naturalOrder = (a, b) -> a - b;
int result1 = naturalOrder.compare(3, 5); // -2 (3 < 5)
int result2 = naturalOrder.compare(5, 5); // 0 (5 == 5)
int result3 = naturalOrder.compare(7, 5); // 2 (7 > 5)

// Компаратор для строк по длине
Comparator<String> byLength = (s1, s2) -> s1.length() - s2.length();

Этот метод является основой для сортировки коллекций (Collections.sort) и работы упорядоченных структур данных (например, TreeSet, TreeMap).