Метод compare
Метод compare класса Comparator сравнивает два объекта
и возвращает целое число. Если первый объект меньше второго,
метод возвращает отрицательное число. Если объекты равны,
возвращается ноль. Если первый объект больше второго,
возвращается положительное число. В первый параметр мы передаем
первый объект для сравнения, во второй - второй объект.
Синтаксис
int compare(T o1, T o2)
Пример
Давайте создадим компаратор, который сравнивает числа по их натуральному порядку, и сравним несколько пар:
import java.util.Comparator;
public class Main
{
public static void main(String[] args)
{
Comparator<Integer> cmp = (a, b) -> Integer.compare(a, b);
System.out.println(cmp.compare(1, 2));
System.out.println(cmp.compare(2, 2));
System.out.println(cmp.compare(3, 2));
}
}
Результат выполнения кода:
-1
0
1
Пример
Давайте создадим компаратор, который сравнивает строки по их длине, и сравним несколько пар:
import java.util.Comparator;
public class Main
{
public static void main(String[] args)
{
Comparator<String> cmp = (a, b) -> Integer.compare(a.length(), b.length());
System.out.println(cmp.compare("abcde", "abc"));
System.out.println(cmp.compare("abc", "abcde"));
System.out.println(cmp.compare("abc", "123"));
}
}
Результат выполнения кода:
2
-2
0
Пример
Давайте отсортируем список строк с помощью компаратора, сравнивающего строки в обратном порядке:
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
public class Main
{
public static void main(String[] args)
{
List<String> list = new ArrayList<>(List.of("abcde", "abc", "ab", "12345"));
Comparator<String> cmp = (a, b) -> b.compareTo(a);
list.sort(cmp);
System.out.println(list);
}
}
Результат выполнения кода:
[abcde, abc, ab, 12345]
Смотрите также
-
класс
Comparator,
который используется для сравнения объектов -
метод
comparing,
который создает компаратор по ключу -
метод
reversed,
который меняет порядок компаратора -
метод
compareTo,
который сравнивает объекты внутри класса