Что означает возврат значения -1 в методе compare/compareTo в Java?

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

Ответ

В Java возврат значения -1 из методов compare(T o1, T o2) (Comparator) или compareTo(T other) (Comparable) означает, что первый объект (o1 или this) должен быть расположен перед вторым объектом в отсортированном порядке (по возрастанию).

Контракт метода сравнения:

  • -1 → первый объект «меньше» (идёт раньше).
  • 0 → объекты равны с точки зрения порядка.
  • +1 → первый объект «больше» (идёт позже).

Пример реализации Comparable:

class Product implements Comparable<Product> {
    private String name;
    private double price;

    @Override
    public int compareTo(Product other) {
        // Сортировка по возрастанию цены
        return Double.compare(this.price, other.price);
        // Метод Double.compare() сам вернёт -1, 0 или 1
    }
}

Практическое применение: Это соглашение используется всеми стандартными алгоритмами сортировки (Collections.sort(), Arrays.sort()) и коллекциями, основанными на порядке (TreeSet, TreeMap, PriorityQueue).

Важно: Для сравнения примитивных числовых типов всегда используйте статические методы-компараторы (Integer.compare(), Double.compare()), чтобы избежать ошибок с переполнением.