Spec-Zone.ru › Scala 2.13 Library

Trait scala.math.Ordering

Companion object Ordering

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

Тип объекта
Ordering[T]
Аннотации
@implicitNotFound("Нет неявного упорядочения, определённого для ${T}.")
Источник
Ordering.scala
С момента

2.7

См. также

scala.math.Ordered, scala.util.Sorting

Линейные надтипы
PartialOrdering[T], Equiv[T], java.io.Serializable, Comparator[T], AnyRef, Any
Известные подклассы
ValueOrdering, DeadlineIsOrdered, DurationIsOrdered, FiniteDurationIsOrdered, Fractional, Integral, Numeric, BigDecimalAsIfIntegral, BigDecimalAsIfIntegral, BigDecimalIsConflicted, BigDecimalIsFractional, BigDecimalIsFractional, BigIntIsIntegral, BigIntIsIntegral, ByteIsIntegral, ByteIsIntegral, CharIsIntegral, CharIsIntegral, DoubleIsFractional, DoubleIsFractional, FloatIsFractional, FloatIsFractional, IntIsIntegral, IntIsIntegral, LongIsIntegral, LongIsIntegral, ShortIsIntegral, ShortIsIntegral, BigDecimal, BigDecimalOrdering, BigInt, BigIntOrdering, Boolean, BooleanOrdering, Byte, ByteOrdering, CachedReverse, Char, CharOrdering, IeeeOrdering, IeeeOrdering, TotalOrdering, TotalOrdering, IeeeOrdering, IeeeOrdering, TotalOrdering, TotalOrdering, Int, IntOrdering, Long, LongOrdering, OptionOrdering, Short, ShortOrdering, String, StringOrdering, Symbol, SymbolOrdering, Unit, UnitOrdering, DeprecatedDoubleOrdering, DeprecatedFloatOrdering

Члены типа

класс OrderingOps extends AnyRef

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

абстрактный def compare(x: T, y: T): Int

Возвращает целое число, знак которого показывает, как x сравнивается с y.

Знак результата имеет следующее значение:

    отрицательный, если x < yположительный, если x > yноль, если x == y
Definition Classes
Ordering → Comparator

Члены конкретных значений

final def !=(arg0: Any): Boolean

Проверка двух объектов на неравенство.

returns

true если !(this == that), в противном случае false.

Definition Classes
AnyRef → Any

final def ##(): Int

Эквивалентно x.hashCode за исключением упакованных числовых типов и null. Для чисел возвращает значение хэша, которое соответствует равенству значений: если два экземпляра типа значений сравниваются как true, то ## вернёт одинаковое значение хэша для каждого из них. Для null возвращает хэш-код, где null.hashCode вызывает NullPointerException.

returns

значение хэша, согласованное с ==

Definition Classes
AnyRef → Any

def +(other: String): String

Implicit
Этот член добавлен с помощью неявного преобразования из Ordering[T] в any2stringadd[Ordering[T]], выполненное методом any2stringadd в scala.Predef.
Definition Classes
any2stringadd

def ->[B](y: B): (Ordering[T], B)

Implicit
Этот член добавлен с помощью неявного преобразования из Ordering[T] в ArrowAssoc[Ordering[T]], выполненное методом ArrowAssoc в scala.Predef.
Definition Classes
ArrowAssoc
Annotations
@inline()

final def ==(arg0: Any): Boolean

Выражение x == that эквивалентно if (x eq null) that eq null else x.equals(that).

returns

true если объект-получатель эквивалентен аргументу; false в противном случае.

Definition Classes
AnyRef → Any

final def asInstanceOf[T0]: T0

Преобразовать объект-получатель к типу T0.

Обратите внимание, что успех преобразования во время выполнения зависит от семантики стирания Scala. Поэтому выражение 1.asInstanceOf[String] вызовет ClassCastException во время выполнения, в то время как выражение List(1).asInstanceOf[List[String]] не вызовет. В последнем примере, поскольку аргумент типа стирается во время компиляции, невозможно проверить, относятся ли содержимое списка к запрошенному типу.

returns

объект-получатель.

Definition Classes
Any
Exceptions thrown

ClassCastException если объект-получатель не является экземпляром стирания типа T0.

def clone(): AnyRef

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

По умолчанию реализация метода clone зависит от платформы.

returns

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

Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.CloneNotSupportedException]) @native()
Note

не определён SLS как член AnyRef

def ensuring(cond: (Ordering[T]) => Boolean, msg: => Any): Ordering[T]

Implicit
Этот член добавлен с помощью неявного преобразования из Ordering[T] в Ensuring[Ordering[T]], выполненное методом Ensuring в scala.Predef.
Definition Classes
Ensuring

def ensuring(cond: (Ordering[T]) => Boolean): Ordering[T]

Неявный
Этот член добавлен неявным преобразованием из Ordering[T] в Ensuring[Ordering[T]], выполненным методом Ensuring в scala.Predef.
Классы-определения
Ensuring

def ensuring(cond: Boolean, msg: => Any): 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: AnyRef): 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[java.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]

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

returns

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

Definition Classes
AnyRef → Any
Annotations
@native()

def gt(x: T, y: T): Boolean

Возвращает true, если x > y в порядке сортировки.

Definition Classes
Ordering → PartialOrdering

def gteq(x: T, y: T): Boolean

Возвращает true, если x >= y в порядке сортировки.

Definition Classes
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 isReverseOf(other: Ordering[_]): Boolean

Возвращает значение, указывающее, является ли порядок сортировки other противоположным по отношению к данному порядку.

Эквивалентно other == this.reverse.

Реализации должны переопределять этот метод только в том случае, если они также переопределяют reverse.

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[U <: T](x: U, y: U): U

def min[U <: T](x: U, y: U): U

implicit def mkOrderingOps(lhs: T): OrderingOps

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]

Given f, a function from U into T, creates an Ordering[U] whose compare function is equivalent to:

def compare(x:U, y:U) = Ordering[T].compare(f(x), f(y))

def orElse(other: Ordering[T]): Ordering[T]

Creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else the result of others compare function.

other

an Ordering to use if this Ordering returns zero

Example:
    case class Pair(a: Int, b: Int)
    
    val pairOrdering = Ordering.by[Pair, Int](_.a)
                               .orElse(Ordering.by[Pair, Int](_.b))

def orElseBy[S](f: (T) => S)(implicit ord: Ordering[S]): Ordering[T]

Given f, a function from T into S, creates an Ordering[T] whose compare function returns the result of this Ordering's compare function, if it is non-zero, or else a result equivalent to:

Ordering[S].compare(f(x), f(y))

This function is equivalent to passing the result of Ordering.by(f) to orElse.

Example:
    case class Pair(a: Int, b: Int)
    
    val pairOrdering = Ordering.by[Pair, Int](_.a)
                               .orElseBy[Int](_.b)

def reverse: Ordering[T]

Return the opposite ordering of this one.

Implementations overriding this method MUST override isReverseOf as well if they change the behavior at all (for example, caching does not require overriding it).

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 <: AnyRef]](arg0: java.util.function.Function[_ >: T <: AnyRef, _ <: U]): Comparator[T]

Definition Classes
Comparator

def thenComparing[U <: AnyRef](arg0: java.util.function.Function[_ >: T <: AnyRef, _ <: U], arg1: Comparator[_ >: U <: AnyRef]): Comparator[T]

Definition Classes
Comparator

def thenComparing(arg0: Comparator[_ >: T <: AnyRef]): Comparator[T]

Definition Classes
Comparator

def thenComparingDouble(arg0: ToDoubleFunction[_ >: T <: AnyRef]): Comparator[T]

Definition Classes
Comparator

def thenComparingInt(arg0: ToIntFunction[_ >: T <: AnyRef]): Comparator[T]

Definition Classes
Comparator

def thenComparingLong(arg0: ToLongFunction[_ >: T <: AnyRef]): Comparator[T]

Definition Classes
Comparator

def toString(): String

Создаёт строковое представление этого объекта. По умолчанию представление зависит от платформы. На платформе Java это конкатенация имени класса, «@» и хэш-кода объекта в шестнадцатеричном формате.

returns

a String representation of the object.

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(classOf[java.lang.InterruptedException])

final def wait(arg0: Long, arg1: Int): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException])

final def wait(arg0: Long): Unit

Definition Classes
AnyRef
Annotations
@throws(classOf[java.lang.InterruptedException]) @native()

© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala/math/Ordering.html

Spec-Zone.ru

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