Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Integer.compare()

Сравнивает два числа int: отрицательный результат — x меньше, 0 — равны, положительный — x больше.

Доступно с: Java 7

Синтаксис

public static int compare(int x, int y)

Параметры

ПараметрТипОписание
xintПервое число.
yintВторое число.

Возвращаемое значение

int-1, 0 или 1.

Примеры

Три возможных результата:

void main() {
    IO.println(Integer.compare(3, 7));
    IO.println(Integer.compare(7, 3));
    IO.println(Integer.compare(5, 5));
}

Результат:

-1
1
0

Компаратор для сортировки по возрасту:

record Person(String name, int age) {}
 
void main() {
    List<Person> people = new ArrayList<>(List.of(
        new Person("Anna", 30), new Person("Oleg", 25), new Person("Mia", 41)));
 
    people.sort((a, b) -> Integer.compare(a.age(), b.age()));
    IO.println(people);
}

Результат:

[Person[name=Oleg, age=25], Person[name=Anna, age=30], Person[name=Mia, age=41]]

Почему не a - b: вычитание переполняется и даёт неверный знак:

void main() {
    int a = Integer.MIN_VALUE;
    int b = 1;
    IO.println(a - b);
    IO.println(Integer.compare(a, b));
}

Результат:

2147483647
-1

Примечания

Такие же методы есть у Long, Double, Short, Byte и Character. Double.compare() правильно обрабатывает NaN и -0.0, чего не делают операторы < и >. Для сортировки объектов короче Comparator.comparingInt(Person::age).

См. также

  • Comparator.comparing() — Создаёт компаратор, который сравнивает объекты по одному полю.
  • Comparable.compareTo() — Задаёт естественный порядок объектов класса — по нему работают sort() и TreeSet.
  • List.sort() — Сортирует список на месте по заданному правилу.
  • Integer.MAX_VALUE — Наибольшее значение типа int; рядом — Integer.MIN_VALUE.

В учебнике

  • Классы-обёртки — Integer, Double, Boolean и Character в Java: автоупаковка и распаковка, null вместо числа, кеш Integer и почему обёртки нельзя сравнивать через ==.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.