Класс Comparable< T>
Интерфейс, используемый типами, имеющими внутреннее упорядочение.
Операция compareTo определяет полное упорядочение объектов, которое можно использовать для упорядочения и сортировки.
Интерфейс Comparable следует использовать для естественного упорядочения типа. Если тип может быть упорядочен несколькими способами, и ни один из них не является очевидным естественным упорядочением, то может быть лучше не использовать интерфейс Comparable, а предоставить отдельные компараторы вместо этого.
Рекомендуется, чтобы порядок Comparable согласовывался с равенством оператора operator == (a.compareTo(b) == 0 тогда и только тогда, когда a == b), но это не является требованием. Например, double и DateTime имеют compareTo методы, которые не согласуются с оператором operator ==. Для чисел с плавающей точкой метод compareTo более точен, чем равенство, а для DateTime он менее точен.
Примеры:
(0.0).compareTo(-0.0); // => 1 0.0 == -0.0; // => true var now = DateTime.now(); var utcNow = now.toUtc(); now == utcNow; // => false now.compareTo(utcNow); // => 0
Интерфейс Comparable не подразумевает существование операторов сравнения <, <=, > и >=. Они должны быть определены только в том случае, если упорядочение является упорядочением «меньше/больше», то есть упорядочением, в котором вы естественным образом используете слова «меньше, чем» для порядка двух элементов.
Если оператор равенства и compareTo не согласуются, операторы сравнения должны следовать за оператором равенства и, скорее всего, также не будут согласовываться с compareTo. В противном случае они должны соответствовать методу compareTo, чтобы a < b тогда и только тогда, когда a.compareTo(b) < 0.
Класс double определяет операторы сравнения, совместимые с равенством. Операторы отличаются от double.compareTo для -0.0 и NaN.
Класс DateTime не имеет операторов сравнения, вместо этого он имеет более точно названные DateTime.isBefore и DateTime.isAfter, которые оба согласуются с DateTime.compareTo.
Конструкторы
- Comparable()
Свойства
-
hashCode → int
только для чтения, унаследованное
- Хеш-код этого объекта.
-
runtimeType → Type
только для чтения, унаследованное
- Представление типа объекта во время выполнения.
Методы
-
compareTo(
T other) → int - Сравнивает этот объект с другим объектом.
-
noSuchMethod(
Invocation invocation) → dynamic унаследованное - Вызывается при обращении к несуществующему методу или свойству.
-
toString(
) → String унаследованное - Строковое представление этого объекта.
Операторы
-
operator ==(
Object other) → bool унаследованное - Оператор равенства.
Статические методы
-
compare(
Comparable a, Comparable b) → int - Компаратор, сравнивающий один сравнимый объект с другим.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Comparable-class.html