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 или отсортированных карт SortedMap) или для упорядочения коллекций объектов, которые не имеют сравнимого естественного порядка.

Порядок, налагаемый компаратором 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 с компаратором cb . Вторая add операция вернет значение true (а размер древовидного набора увеличится), так как a и b не эквивалентны с точки зрения набора деревьев, хотя это противоречит спецификации Set#add Set.add метода.

Примечание. Как правило, для компараторов рекомендуется также реализовать java.io.Serializable, так как они могут использоваться в качестве методов упорядочивания в сериализуемых структурах данных (напримерTreeSet, ). TreeMap Чтобы структура данных успешно сериализовылась, компаратор (если он указан) должен реализовать Serializable.

Для математически склонных отношение , определяющее наложенный порядок , который данный компаратор c налагает на данный набор объектов S , является следующим:

{(x, y) such that c.compare(x, y) &lt;= 0}.

Частное значение для этого общего порядка:

{(x, y) such that c.compare(x, y) == 0}.

Сразу же из контракта compare следует, что частное является отношением эквивалентности для S, а наложенное упорядочение является общим порядком в S. Когда мы говорим, что упорядочение, наложенное c на S , согласуется с равенствами, мы имеем в виду, что частное отношение для упорядочения является отношением эквивалентности, определенной методами объектов Object#equals(Object) equals(Object) :

{(x, y) such that x.equals(y)}.

Иными словами, если наложенное упорядочение согласуется с equals, классы эквивалентности, определенные отношением equals эквивалентности метода, и классы эквивалентности, определяемые частной частью compare метода, совпадают.

В отличие от Comparable, компаратор может при необходимости разрешить сравнение аргументов NULL, сохраняя при этом требования для отношения эквивалентности.

Этот интерфейс является членом Платформы коллекций Java.

Добавлено в версии 1.2.

Документация по Java для java.util.Comparator.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Свойства

Handle

Возвращает значение JNI базового объекта Android.

(Унаследовано от IJavaObject)
JniIdentityHashCode

Возвращает значение для упаковаемого java.lang.System.identityHashCode() экземпляра.

(Унаследовано от IJavaPeerable)
JniManagedPeerState

Состояние управляемого однорангового узла.

(Унаследовано от IJavaPeerable)
JniPeerMembers

Поддержка доступа и вызова участников.

(Унаследовано от IJavaPeerable)
PeerReference

JniObjectReference Возвращает экземпляр объекта Java, заключенный в оболочку.

(Унаследовано от IJavaPeerable)

Методы

Compare(Object, Object)

Сравнивает два аргумента для порядка.

Comparing(IFunction)

Принимает функцию, извлекающую java.lang.Comparable Comparable ключ сортировки из типа T, и возвращает Comparator<T> объект , который сравнивает по ключу сортировки.

Comparing(IFunction, IComparator)

Принимает функцию, извлекающую ключ сортировки из типа T, и возвращает Comparator<T> объект , который сравнивает по ключу сортировки с помощью указанного Comparator.

ComparingDouble(IToDoubleFunction)

Принимает функцию, извлекающую double ключ сортировки из типа T, и возвращает Comparator<T> объект , который сравнивает по ключу сортировки.

ComparingInt(IToIntFunction)

Принимает функцию, извлекающую int ключ сортировки из типа T, и возвращает Comparator<T> объект , сравнивающий по ключу сортировки.

ComparingLong(IToLongFunction)

Принимает функцию, извлекающую long ключ сортировки из типа T, и возвращает Comparator<T> объект , который сравнивает по ключу сортировки.

Disposed()

Вызывается при удалении экземпляра.

(Унаследовано от IJavaPeerable)
DisposeUnlessReferenced()

Если отсутствуют незадающиеся ссылки на этот экземпляр, вызывает Dispose(); в противном случае ничего не делает.

(Унаследовано от IJavaPeerable)
Equals(Object)

Указывает, &ли какой-то другой объект; равно" этот компаратор.

Finalized()

Вызывается после завершения работы экземпляра.

(Унаследовано от IJavaPeerable)
NaturalOrder()

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

NullsFirst(IComparator)

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

NullsLast(IComparator)

Возвращает дружественный к значению null компаратор, который считает null , что больше, чем значение, отличное от NULL.

Reversed()

Возвращает компаратор, который применяет обратное упорядочение этого компаратора.

ReverseOrder()

Возвращает компаратор, который применяет обратное значение естественного <>упорядочения</em>.

SetJniIdentityHashCode(Int32)

Задайте значение, возвращаемое .JniIdentityHashCode

(Унаследовано от IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Функция сравнения, которая налагает общий порядок для некоторых коллекций объектов.

(Унаследовано от IJavaPeerable)
SetPeerReference(JniObjectReference)

Задайте значение, возвращаемое .PeerReference

(Унаследовано от IJavaPeerable)
ThenComparing(IComparator)

Возвращает словарь лексикографического порядка с другим компаратором.

ThenComparing(IFunction)

Возвращает компаратор лексикографического порядка с функцией, которая извлекает ключ сортировки Comparable .

ThenComparing(IFunction, IComparator)

Возвращает словарь лексикографического порядка с функцией, которая извлекает ключ для сравнения с заданным Comparator.

ThenComparingDouble(IToDoubleFunction)

Возвращает компаратор лексикографического порядка с функцией, которая извлекает ключ сортировки double .

ThenComparingInt(IToIntFunction)

Возвращает компаратор лексикографического порядка с функцией, которая извлекает ключ сортировки int .

ThenComparingLong(IToLongFunction)

Возвращает компаратор лексикографического порядка с функцией, которая извлекает ключ сортировки long .

UnregisterFromRuntime()

Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала его из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов.

(Унаследовано от IJavaPeerable)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Функция сравнения, которая налагает общий порядок для некоторых коллекций объектов.

GetJniTypeName(IJavaPeerable)

Функция сравнения, которая налагает общий порядок для некоторых коллекций объектов.

Применяется к