Trait scala.math.Ordering
Companion object Ordering
trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializable
- Тип объекта
- Ordering[T]
- Аннотации
- @implicitNotFound("Нет неявного упорядочения, определённого для ${T}.")
- Источник
- Ordering.scala
- С момента
2.7
- См. также
- Линейные надтипы
- 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
Члены конкретных значений
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
копия объекта-получателя.
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 с нелокальными возвратами и исключениями, зависят от платформы.
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
объект класса, соответствующий типу получателя во время выполнения.
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
значение хэш-кода для этого объекта.
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
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.
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
© 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
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 для получения доступа к другим неявным порядкам.