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

Тип Comparable

Тип Comparable представляет собой интерфейс, который реализуют объекты, поддерживающие упорядоченное сравнение с другими объектами того же типа. Класс, реализующий этот интерфейс, обязан предоставить метод compareTo, который принимает один параметр - другой объект для сравнения - и возвращает целое число. Если текущий объект меньше переданного, метод возвращает отрицательное число, если больше - положительное, а если они равны - ноль.

Тип Comparable является обобщенным и параметризуется типом сравниваемых объектов. Например, Comparable<int> означает, что объект можно сравнивать с целыми числами.

Синтаксис

abstract class Comparable<T> { int compareTo(T other); }

Чтобы реализовать тип Comparable в своем классе, нужно указать его в списке implements или extends и определить метод compareTo.

Пример

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

class Person implements Comparable<Person> { String name; int age; Person(this.name, this.age); @override int compareTo(Person other) { return this.age.compareTo(other.age); } } void main() { Person a = Person('Alice', 30); Person b = Person('Bob', 25); print(a.compareTo(b)); print(b.compareTo(a)); print(a.compareTo(a)); }

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

1 -1 0

Пример

Давайте отсортируем список объектов, реализующих Comparable, с помощью метода sort:

class Person implements Comparable<Person> { String name; int age; Person(this.name, this.age); @override int compareTo(Person other) { return this.age.compareTo(other.age); } @override String toString() { return '$name ($age)'; } } void main() { List<Person> people = [ Person('Alice', 30), Person('Bob', 25), Person('Carol', 35), ]; people.sort(); print(people); }

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

[Bob (25), Alice (30), Carol (35)]

Пример

Давайте сравним две строки с помощью встроенной реализации Comparable, которую имеет класс String:

void main() { String a = 'abcde'; String b = '12345'; print(a.compareTo(b)); print(b.compareTo(a)); }

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

48 -48

Метод compareTo возвращает разницу кодов первых несовпадающих символов, поэтому результат может быть любым целым числом, а не только -1, 0 или 1.

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

  • тип Type,
    который представляет тип объекта во время выполнения
  • тип Enum,
    который позволяет создавать перечисления
  • тип Function,
    который представляет функции как объекты
  • тип dynamic,
    который отключает проверку типов во время компиляции
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить