РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
350 of 1163 menu

Класс Comparator

Класс Comparator представляет собой функциональный интерфейс, который задает правило сравнения двух объектов одного типа. Он часто применяется для сортировки коллекций и массивов, когда нужно задать порядок, отличный от естественного. В методе compare мы передаем два объекта: первый - сравниваемый объект, второй - объект, с которым сравнивают. Метод возвращает отрицательное число, если первый объект меньше второго, ноль - если объекты равны, и положительное число, если первый объект больше второго.

Синтаксис

Comparator<T> comparator = (a, b) -> { return ...; }; // или через анонимный класс Comparator<T> comparator = new Comparator<T>() { public int compare(T a, T b) { return ...; } };

Пример

Давайте отсортируем список чисел по возрастанию, используя Comparator:

import java.util.List; import java.util.ArrayList; import java.util.Comparator; public class Main { public static void main(String[] args) { List<Integer> list = new ArrayList<>(List.of(3, 1, 4, 2, 5)); Comparator<Integer> comparator = (a, b) -> a - b; list.sort(comparator); System.out.println(list); } }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Пример

Давайте отсортируем список строк по убыванию длины, используя Comparator:

import java.util.List; import java.util.ArrayList; import java.util.Comparator; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(List.of("abcde", "ab", "abc", "a", "abcd")); Comparator<String> comparator = (a, b) -> b.length() - a.length(); list.sort(comparator); System.out.println(list); } }

Результат выполнения кода:

["abcde", "abcd", "abc", "ab", "a"]

Пример

Давайте используем статический метод comparing для сортировки списка строк по алфавиту:

import java.util.List; import java.util.ArrayList; import java.util.Comparator; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(List.of("abcde", "ab", "abc", "a", "abcd")); Comparator<String> comparator = Comparator.comparing(s -> s); list.sort(comparator); System.out.println(list); } }

Результат выполнения кода:

["a", "ab", "abc", "abcd", "abcde"]

Смотрите также

  • метод compare,
    который сравнивает два объекта
  • метод comparing,
    который создает компаратор по ключу
  • метод naturalOrder,
    который возвращает компаратор естественного порядка
  • метод reversed,
    который меняет порядок сортировки на обратный
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить