Spec-Zone.ru › Scala 2.12 Library

Трейт scala.math.Ordering

Компаньон объект Ordering

трейт Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializable

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, чтобы получить доступ к другим неявным порядками.

Self Type
Ordering[T]
Annotations
@implicitNotFound( msg = ... )
Source
Ordering.scala
Since

2.7

См. также

scala.math.Ordered, scala.util.Sorting

Линейные супертипы
Известные подклассы

Тип члены

класс Ops extends AnyRef

Абстрактные члены значений

абстрактный 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 зависит от платформы.

возвращает

копию объекта-получателя.

Атрибуты
protected[lang]
Определяющие классы
AnyRef
Аннотации
@throws( ... ) @native()
Примечание

не указан SLS как член AnyRef

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[_]

Возвращает представление класса объекта во время выполнения.

возвращает

объект класса, соответствующий типу получателя во время выполнения.

Классы определений
AnyRef → Any
Аннотации
@native()

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

значение хэш-кода для этого объекта.

Definition Classes
AnyRef → Any
Annotations
@native()

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

Definition Classes
AnyRef
Annotations
@throws( ... ) @native()

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API