Integer.compare()
Сравнивает два числа int: отрицательный результат — x меньше, 0 — равны, положительный — x больше.
Доступно с: Java 7
Синтаксис
public static int compare(int x, int y)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| x | int | Первое число. |
| y | int | Второе число. |
Возвращаемое значение
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 и почему обёртки нельзя сравнивать через ==.