Трейт scala.math.Ordering
Компаньон объект Ordering
трейт Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializable
Абстрактные члены значений
абстрактный def compare(x: T, y: T): Int
Возвращает целое число, знак которого сообщает, как x сравнивается с y.
Знак результата имеет следующее значение:
-
отрицательный, если x < yположительный, если x > yноль в противном случае (если x == y)
- Definition Classes
- Ordering → Comparator
Члены-значения
final def !=(arg0: Любой): Булево
Проверка двух объектов на неравенство.
- возвращает
trueесли !(this == that), иначе false.
- Определяющие классы
- AnyRef → Любой
final def ##(): Целое
Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращает значение хэша, согласованное с равенством значений: если два экземпляра типов значений сравниваются как true, то ## выведет одинаковое значение хэша для каждого из них. Для null возвращает хэш-код, где null.hashCode выбрасывает NullPointerException.
- возвращает
значение хэша, согласованное с ==
- Определяющие классы
- AnyRef → Любой
def +(other: Строка): Строка
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в any2stringadd[Ordering[T]], выполненное методом any2stringadd в scala.Predef.
- Определяющие классы
- any2stringadd
def ->[B](y: B): (Ordering[T], B)
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в ArrowAssoc[Ordering[T]], выполненное методом ArrowAssoc в scala.Predef.
- Определяющие классы
- ArrowAssoc
- Аннотации
- @inline()
final def ==(arg0: Любой): Булево
Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Определяющие классы
- AnyRef → Любой
final def asInstanceOf[T0]: T0
Приведение объекта-получателя к типу T0.
Обратите внимание, что успех приведения во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] выбросит исключение ClassCastException во время выполнения, а выражение List(1).asInstanceOf[List[String]] нет. В последнем примере, так как аргумент типа стёрся при компиляции, проверить, являются ли элементы списка требуемого типа, невозможно.
- возвращает
объект-получатель.
- Определяющие классы
- Любой
- Исключения
ClassCastExceptionесли объект-получатель не является экземпляром стирания типаT0.
def clone(): AnyRef
Создаёт копию объекта-получателя.
По умолчанию реализация метода clone зависит от платформы.
- возвращает
копию объекта-получателя.
def ensuring(cond: (Ordering[T]) ⇒ Булево, msg: ⇒ Любой): Ordering[T]
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в Ensuring[Ordering[T]], выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: (Ordering[T]) ⇒ Булево): Ordering[T]
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в Ensuring[Ordering[T]], выполненное методом Ensuring в scala.Predef.
- Определяющие классы
- Ensuring
def ensuring(cond: Булево, msg: ⇒ Любой): Ordering[T]
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в Ensuring[Ordering[T]] с помощью метода Ensuring в scala.Predef.
- Классы определений
- Ensuring
def ensuring(cond: Boolean): Ordering[T]
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в Ensuring[Ordering[T]] с помощью метода Ensuring в scala.Predef.
- Классы определений
- Ensuring
final def eq(arg0: AnyRef): Boolean
Проверяет, является ли аргумент (that) ссылкой на объект-получатель (this).
Метод eq реализует отношение эквивалентности отношение эквивалентности для непустых экземпляров AnyRef, и имеет три дополнительных свойства:
-
Он согласован: для любых непустых экземпляров
x и y типа AnyRef, многократные вызовы x.eq(y) последовательно возвращают true или последовательно возвращают false.Для любого непустого экземпляра x типа AnyRef, вызовы x.eq(null) и null.eq(x) возвращают false.
null.eq(null) возвращает true.
При переопределении методов equals или hashCode важно обеспечить, чтобы их поведение соответствовало равенству по ссылке. Таким образом, если два объекта являются ссылками друг на друга (o1 eq o2), они должны быть равны друг другу (o1 == o2) и должны иметь одинаковое значение хэша (o1.hashCode == o2.hashCode).
- возвращает
trueесли аргумент является ссылкой на объект-получатель;falseв противном случае.
- Классы определений
- AnyRef
def equals(arg0: Any): Boolean
Метод равенства для типов ссылок. Реализация по умолчанию делегирует вызов методу eq.
См. также equals в scala.Any.
- возвращает
trueесли объект-получатель эквивалентен аргументу;falseв противном случае.
- Классы определений
- AnyRef → Any
def equiv(x: T, y: T): Boolean
Возвращает true, если x == y в порядке.
- Классы определений
- Ordering → PartialOrdering → Equiv
def finalize(): Unit
Вызывается сборщиком мусора для объекта-получателя, когда к объекту больше нет ссылок.
Подробности о том, когда и если вызывается метод finalize, а также взаимодействии finalize с нелокальными возвратами и исключениями, зависят от платформы.
- Атрибуты
- protected[lang]
- Классы определений
- AnyRef
- Аннотации
- @throws( classOf[java.lang.Throwable] )
- Примечание
не указано SLS в качестве члена AnyRef
def formatted(fmtstr: String): String
Возвращает строку, отформатированную в соответствии с данной строкой format. Формат строк аналогичен формату String.format (@см. java.lang.String.format).
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в StringFormat[Ordering[T]] с помощью метода StringFormat в scala.Predef.
- Классы определений
- StringFormat
- Аннотации
- @inline()
final def getClass(): Class[_]
Возвращает представление класса объекта во время выполнения.
- возвращает
объект класса, соответствующий типу получателя во время выполнения.
def gt(x: T, y: T): Boolean
Возвращает true, если x > y в порядке.
- Классы определений
- Ordering → PartialOrdering
def gteq(x: T, y: T): Boolean
Возвращает true, если x >= y в порядке.
- Классы определений
- Ordering → PartialOrdering
def hashCode(): Int
Метод hashCode для ссылочных типов. См. hashCode в scala.Any.
- returns
значение хэш-кода для этого объекта.
final def isInstanceOf[T0]: Boolean
Проверка, является ли динамический тип объекта-получателя T0.
Обратите внимание, что результат проверки зависит от стирания типов Scala. Поэтому выражение 1.isInstanceOf[String] вернёт false, а выражение List(1).isInstanceOf[List[String]] вернёт true. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, относятся ли элементы списка к указанному типу.
- returns
true, если объект-получатель является экземпляром стёртого типаT0;falseв противном случае.
- Definition Classes
- Any
def lt(x: T, y: T): Boolean
Возвращает true, если x < y в порядке сортировки.
- Definition Classes
- Ordering → PartialOrdering
def lteq(x: T, y: T): Boolean
Возвращает true, если x <= y в порядке сортировки.
- Definition Classes
- Ordering → PartialOrdering
def max(x: T, y: T): T
def min(x: T, y: T): T
implicit def mkOrderingOps(lhs: T): Ops
final def ne(arg0: AnyRef): Boolean
Эквивалентно !(this eq that).
- returns
true, если аргумент не является ссылкой на объект-получатель;falseв противном случае.
- Definition Classes
- AnyRef
final def notify(): Unit
Разбуживает единственную нить, ожидающую монитора объекта-получателя.
- Definition Classes
- AnyRef
- Annotations
- @native()
- Note
не определено SLS как член AnyRef
final def notifyAll(): Unit
Разбуживает все нити, ожидающие монитора объекта-получателя.
- Definition Classes
- AnyRef
- Annotations
- @native()
- Note
не определено SLS как член AnyRef
def on[U](f: (U) ⇒ T): Ordering[U]
На основе функции f, преобразующей U в T, создаёт Ordering[U], чья функция сравнения эквивалентна:
def compare(x:U, y:U) = Ordering[T].compare(f(x), f(y))
def reverse: Ordering[T]
Возвращает обратный порядок сортировки.
- Definition Classes
- Ordering → PartialOrdering
def reversed(): Comparator[T]
- Definition Classes
- Comparator
final def synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
def thenComparing[U <: Comparable[_ >: U]](arg0: java.util.function.Function[_ >: T, _ <: U]): Comparator[T]
- Definition Classes
- Comparator
def thenComparing[U](arg0: java.util.function.Function[_ >: T, _ <: U], arg1: Comparator[_ >: U]): Comparator[T]
- Definition Classes
- Comparator
def thenComparing(arg0: Comparator[_ >: T]): Comparator[T]
- Definition Classes
- Comparator
def thenComparingDouble(arg0: ToDoubleFunction[_ >: T]): Comparator[T]
- Definition Classes
- Comparator
def thenComparingInt(arg0: ToIntFunction[_ >: T]): Comparator[T]
- Definition Classes
- Comparator
def thenComparingLong(arg0: ToLongFunction[_ >: T]): Comparator[T]
- Definition Classes
- Comparator
def toString(): String
Создаёт строковое представление этого объекта. Стандартное представление зависит от платформы. На платформе Java это конкатенация имени класса, "@" и хэш-кода объекта в шестнадцатеричном формате.
- returns
строковое представление объекта.
- Definition Classes
- AnyRef → Any
def tryCompare(x: T, y: T): Some[Int]
Возвращает, определено ли сравнение между x и y, и если да, то результат compare(x, y).
- Definition Classes
- Ordering → PartialOrdering
final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long): Unit
def →[B](y: B): (Ordering[T], B)
- Неявный
- Этот член добавлен неявным преобразованием из Ordering[T] в ArrowAssoc[Ordering[T]], выполненным методом ArrowAssoc в scala.Predef.
- Definition Classes
- ArrowAssoc
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala/math/Ordering.html
Ordering — это трейт, экземпляры которого представляют стратегию сортировки экземпляров типа.
Компаньон-объект Ordering определяет множество неявных объектов для работы с подтипами AnyVal (например, Int, Double), String и другими.
Для сортировки экземпляров по одному или нескольким членам переменных можно воспользоваться этими встроенными порядками, используя Ordering.by и Ordering.on:
import scala.util.Sorting val pairs = Array(("a", 5, 2), ("c", 3, 1), ("b", 1, 3)) // sort by 2nd element Sorting.quickSort(pairs)(Ordering.by[(String, Int, Int), Int](_._2)) // sort by the 3rd element, then 1st Sorting.quickSort(pairs)(Ordering[(Int, String)].on(x => (x._3, x._1)))Ordering[T] реализуется путём указания compare(a:T, b:T), который определяет, как упорядочить два экземпляра a и b. Экземпляры Ordering[T] могут использоваться, например, в scala.util.Sorting для сортировки коллекций, таких как Array[T].
Например:
import scala.util.Sorting case class Person(name:String, age:Int) val people = Array(Person("bob", 30), Person("ann", 32), Person("carl", 19)) // sort by age object AgeOrdering extends Ordering[Person] { def compare(a:Person, b:Person) = a.age compare b.age } Sorting.quickSort(people)(AgeOrdering)Этот трейт и scala.math.Ordered оба предоставляют эту же функциональность, но по-разному. Тип T может получить единственный способ упорядочить себя, расширив Ordered. Используя Ordering, этот же тип может быть отсортирован многими другими способами. Ordered и Ordering оба предоставляют неявные значения, позволяющие использовать их взаимозаменяемо.
Вы можете импортировать scala.math.Ordering.Implicits, чтобы получить доступ к другим неявным порядками.
2.7
scala.math.Ordered, scala.util.Sorting