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

Класс Comparable

Класс Comparable - это интерфейс из пакета java.lang, который позволяет задать естественный порядок сравнения объектов. Класс, реализующий этот интерфейс, обязуется предоставить метод compareTo. В этот метод мы передаем объект того же типа, с которым хотим сравнить текущий объект. Метод возвращает целое число: отрицательное, если текущий объект меньше переданного, ноль, если они равны, и положительное, если текущий объект больше. Благодаря Comparable работают сортировка коллекций через Collections.sort и List.sort, а также классы вроде TreeSet и TreeMap.

Синтаксис

public class MyClass implements Comparable<MyClass> { public int compareTo(MyClass obj) { // comparison logic } }

Пример

Давайте создадим класс Item с полем value и реализуем в нем интерфейс Comparable, сравнивая объекты по значению:

import java.util.List; import java.util.Collections; public class Main { static class Item implements Comparable<Item> { int value; Item(int value) { this.value = value; } public int compareTo(Item other) { return this.value - other.value; } public String toString() { return String.valueOf(value); } } public static void main(String[] args) { List<Item> list = List.of( new Item(3), new Item(1), new Item(2) ); List<Item> sorted = new java.util.ArrayList<>(list); Collections.sort(sorted); System.out.println(sorted); } }

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

[1, 2, 3]

Пример

Давайте сравним два объекта напрямую через метод compareTo и посмотрим на возвращаемые значения:

public class Main { public static void main(String[] args) { String a = "abcde"; String b = "12345"; System.out.println(a.compareTo(b)); System.out.println(b.compareTo(a)); System.out.println(a.compareTo(a)); } }

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

48 -48 0

Пример

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

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

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

[1, 2, 3, 4, 5]

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

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