IComparator Интерфейс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Функция сравнения, которая накладывает общий порядок для некоторых коллекций объектов.
[Android.Runtime.Register("java/util/Comparator", "", "Java.Util.IComparatorInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IComparator : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Comparator", "", "Java.Util.IComparatorInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IComparator = interface
interface IJavaObject
interface IDisposable
interface IJavaPeerable
- Производный
- Атрибуты
- Реализации
Комментарии
Функция сравнения, которая накладывает общий порядок для некоторых коллекций объектов. Сравнители могут передаваться методу сортировки (например Collections#sort(List,Comparator) Collections.sort
, или Arrays#sort(Object[],Comparator) Arrays.sort
) для обеспечения точного управления порядком сортировки. Сравнители также можно использовать для управления порядком определенных структур данных (например, отсортированных наборов SortedSet или сортированных карт с сортировкой Карты) или предоставления порядка для коллекций объектов, которые не имеют сравнимого естественного порядка.
Порядок, введенный компаратором c
для набора элементов S
, должен быть согласован с равными, если и только если c.compare(e1, e2)==0
имеет одинаковое логическое значение, что e1.equals(e2)
и для каждого e1
и e2
в S
.
При использовании компратора следует соблюдать осторожность, которая может ввести порядок, несогласованный с равными порядками, чтобы упорядочить отсортированный набор (или отсортированную карту). Предположим, что отсортированный набор (или отсортированная карта) с явным компратором c
используется с элементами (или ключами), рисуемых из набора S
. Если порядок, наложенный c
S
на несогласован с равными, отсортированный набор (или отсортированная карта) будет вести себя "странно". В частности, отсортированный набор (или отсортированная карта) нарушает общий контракт для набора (или карты), который определяется с точки зрения equals
.
Например, предположим, что один добавляет два элемента a
и такой, что (a.equals(b) && c.compare(a, b) != 0)
к пустому TreeSet
с компаниматоромc
b
. Вторая add
операция вернет значение true (и размер набора деревьев увеличится), так как a
и b
не эквивалентен с точки зрения набора деревьев, несмотря на то, что это противоречит спецификации Set#add Set.add
метода.
Примечание. Обычно рекомендуется реализовать компраторы java.io.Serializable
, так как они могут использоваться в качестве методов упорядочивания в сериализуемых структурах данных (например TreeSet
, TreeMap
). Чтобы структура данных успешно сериализовылась, средство сравнения (если указано) должно реализовать Serializable
.
Для математического наклона отношение, определяющее вложенное упорядочивание, которое данный компратор c
накладывает на заданный набор объектовS
:
{(x, y) such that c.compare(x, y) <= 0}.
Ниже приведена цитата для этого общего порядка:
{(x, y) such that c.compare(x, y) == 0}.
Он следует сразу же из контракта для compare
того, чтобы кворот является отношением эквивалентности поS
, и что вложенное заказ является общим порядком.S
Когда мы говорим, что порядок, наложенный S
c
на, согласуется с равными, мы имеем в виду, что кворот для упорядочивания является отношением эквивалентности, определяемым методом объектовObject#equals(Object) equals(Object)
:
{(x, y) such that x.equals(y)}.
Иными словами, если вложенное упорядочение согласовано с равными, классы эквивалентности, определенные отношением equals
эквивалентности метода, и классы эквивалентности, определенные квалиентным compare
методом, совпадают.
В отличие от Comparable
этого, компратор может при необходимости разрешать сравнение аргументов NULL, сохраняя требования для отношения эквивалентности.
Этот интерфейс является членом Платформы коллекций Java.
Добавлено в версии 1.2.
Документация по Java для java.util.Comparator
.
Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.
Свойства
Handle |
Возвращает значение JNI базового объекта Android. (Унаследовано от IJavaObject) |
JniIdentityHashCode |
Возвращает значение |
JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
JniPeerMembers |
Поддержка доступа к членам и вызовов. (Унаследовано от IJavaPeerable) |
PeerReference |
JniObjectReference Возвращает экземпляр объекта Java в оболочке. (Унаследовано от IJavaPeerable) |
Методы
Compare(Object, Object) |
Сравнивает два аргумента для порядка. |
Comparing(IFunction) |
Принимает функцию, извлекающую |
Comparing(IFunction, IComparator) |
Принимает функцию, извлекающую ключ сортировки из типа |
ComparingDouble(IToDoubleFunction) |
Принимает функцию, извлекающую |
ComparingInt(IToIntFunction) |
Принимает функцию, извлекающую |
ComparingLong(IToLongFunction) |
Принимает функцию, извлекающую |
Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
DisposeUnlessReferenced() |
Если нет невыполненных ссылок на этот экземпляр, то вызывается |
Equals(Object) |
Указывает, является ли другой объект " равно" этот компратор. |
Finalized() |
Вызывается при завершении экземпляра. (Унаследовано от IJavaPeerable) |
NaturalOrder() |
Возвращает компратор, который сравнивает |
NullsFirst(IComparator) |
Возвращает средство сравнения с значением NULL, которое считается |
NullsLast(IComparator) |
Возвращает понятный для null средство сравнения, которое считается |
Reversed() |
Возвращает компратор, который накладывает обратное упорядочение этого компратора. |
ReverseOrder() |
Возвращает компратор, который накладывает обратное <>естественное упорядочение< или em>. |
SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое |
SetJniManagedPeerState(JniManagedPeerStates) |
Функция сравнения, которая накладывает общий порядок для некоторых коллекций объектов. (Унаследовано от IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое |
ThenComparing(IComparator) |
Возвращает словарь сравнения порядка с другим компратором. |
ThenComparing(IFunction) |
Возвращает словарь сравнения с функцией, извлекающей ключ сортировки |
ThenComparing(IFunction, IComparator) |
Возвращает словарь сравнения с функцией, извлекающей ключ для сравнения с заданным. |
ThenComparingDouble(IToDoubleFunction) |
Возвращает словарь сравнения с функцией, извлекающей ключ сортировки |
ThenComparingInt(IToIntFunction) |
Возвращает словарь сравнения лексографического порядка с функцией, которая извлекает ключ сортировки |
ThenComparingLong(IToLongFunction) |
Возвращает словарь сравнения с функцией, извлекающей ключ сортировки |
UnregisterFromRuntime() |
Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов. (Унаследовано от IJavaPeerable) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверяемого средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Функция сравнения, которая накладывает общий порядок для некоторых коллекций объектов. |
GetJniTypeName(IJavaPeerable) |
Функция сравнения, которая накладывает общий порядок для некоторых коллекций объектов. |