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