Langage

IComparable Interface

Définition

Cette interface impose un ordre total aux objets de chaque classe qui l’implémente.

[Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public interface IComparable : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/lang/Comparable", "", "Java.Lang.IComparableInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type IComparable = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Dérivé
Attributs
Implémente

Remarques

Cette interface impose un ordre total aux objets de chaque classe qui l’implémente. Cet ordre est appelé ordre naturel de la classe, et la méthode de la classe est appelée méthode de compareTocomparaison naturelle.

Les listes (et tableaux) d’objets qui implémentent cette interface peuvent être triées automatiquement par Collections#sort(List) Collections.sort (et Arrays#sort(Object[]) Arrays.sort). Les objets qui implémentent cette interface peuvent être utilisés comme clés dans une carte triée TridMap ou en tant qu’éléments d’un jeu trié TridSet, sans avoir à spécifier de comparateur de comparateur.

L’ordre naturel d’une classe C est considéré comme cohérent avec des valeurs égales si et seulement s’il e1.compareTo(e2) == 0 a la même valeur booléenne que e1.equals(e2) pour chaque e1e2 classe C. Notez qu’il null ne s’agit pas d’une instance d’une classe et e.compareTo(null) doit lever une NullPointerException valeur même si e.equals(null) elle retourne false.

Il est fortement recommandé (bien qu’il ne soit pas nécessaire) que les classements naturels soient cohérents avec les égaux. Cela est dû au fait que les ensembles triés (et les cartes triées) sans comparateurs explicites se comportent « étrangement » lorsqu’ils sont utilisés avec des éléments (ou des clés) dont l’ordre naturel est incohérent avec les égaux. En particulier, un tel ensemble trié (ou carte triée) enfreint le contrat général pour l’ensemble (ou la carte), qui est défini en termes de equals méthode.

Par exemple, si l’on ajoute deux clés a et b qu’à (!a.equals(b) && a.compareTo(b) == 0) un jeu trié qui n’utilise pas de comparateur explicite, la deuxième add opération retourne false (et la taille du jeu trié n’augmente pas), car a elle b est équivalente du point de vue de l’ensemble trié.

Pratiquement tous les Java classes principales qui implémentent Comparable ont des classements naturels qui sont cohérents avec les égaux. Une exception est java.math.BigDecimal, dont java.math.BigDecimal#compareTo ordre naturel équivaut aux objets avec des valeurs numériques égales BigDecimal et des représentations différentes (comme 4.0 et 4.00). Pour java.math.BigDecimal#equals BigDecimal.equals() retourner true, la représentation et la valeur numérique des deux BigDecimal objets doivent être identiques.

Pour les tendances mathématiques, la relation qui définit l’ordre naturel sur une classe donnée C est :

{@code
                  {(x, y) such that x.compareTo(y) <= 0}.
            }

Le quotient pour cet ordre total est le suivant :

{@code
                  {(x, y) such that x.compareTo(y) == 0}.
            }

Il suit immédiatement du contrat pour compareTo que le quotient soit une relation d’équivalence sur C, et que l’ordre naturel est un ordre total sur C. Lorsque nous disons que l’ordre naturel d’une classe est cohérent avec les égaux, nous voulons dire que le quotient pour l’ordre naturel est la relation d’équivalence définie par la méthode de Object#equals(Object) equals(Object) la classe :

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

En d’autres termes, lorsque l’ordre naturel d’une classe est cohérent avec les égaux, les classes d’équivalence définies par la relation d’équivalence de la equals méthode et les classes d’équivalence définies par le quotient de la compareTo méthode sont identiques.

Cette interface est membre de l’infrastructure Java Collections.

Ajouté dans la version 1.2.

Java documentation pour java.lang.Comparable.

Les parties de cette page sont des modifications basées sur le travail créé et partagé par Android Open Source et utilisées en fonction des termes décrits dans la Creative Commons 2.5 Attribution License.

Propriétés

Nom Description
Handle

Obtient la valeur JNI de l’objet Android sous-jacent.

(Hérité de IJavaObject)
JniIdentityHashCode

Retourne la valeur de java.lang.System.identityHashCode() l’instance encapsulée.

(Hérité de IJavaPeerable)
JniManagedPeerState

État de l’homologue managé.

(Hérité de IJavaPeerable)
JniObjectReferenceControlBlock

Cette interface impose un ordre total aux objets de chaque classe qui l’implémente.

(Hérité de IJavaPeerable)
JniPeerMembers

Prise en charge de l’accès aux membres et de l’appel.

(Hérité de IJavaPeerable)
PeerReference

Retourne une JniObjectReference instance d’objet Java encapsulée.

(Hérité de IJavaPeerable)

Méthodes

Nom Description
CompareTo(Object)

Compare cet objet à l’objet spécifié pour l’ordre.

Disposed()

Appelé lorsque l’instance a été supprimée.

(Hérité de IJavaPeerable)
DisposeUnlessReferenced()

S’il n’existe aucune référence en suspens à cette instance, les appels Dispose(); sinon, ne fait rien.

(Hérité de IJavaPeerable)
Finalized()

Appelé lorsque l’instance a été finalisée.

(Hérité de IJavaPeerable)
SetJniIdentityHashCode(Int32)

Définissez la valeur retournée par JniIdentityHashCode.

(Hérité de IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Cette interface impose un ordre total aux objets de chaque classe qui l’implémente.

(Hérité de IJavaPeerable)
SetPeerReference(JniObjectReference)

Définissez la valeur retournée par PeerReference.

(Hérité de IJavaPeerable)
UnregisterFromRuntime()

Annulez l’inscription de cette instance afin que le runtime ne le retourne pas à partir d’appels futurs Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Hérité de IJavaPeerable)

Méthodes d’extension

Nom Description
GetJniTypeName(IJavaPeerable)

Obtient le nom JNI du type de l’instance self.

JavaAs<TResult>(IJavaPeerable)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

JavaCast<TResult>(IJavaObject)

Effectue une conversion de type vérifiée par le runtime Android.

JavaCast<TResult>(IJavaObject)

Cette interface impose un ordre total aux objets de chaque classe qui l’implémente.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Essayez de forcer self le typeTResult, en vérifiant que le forçage est valide côté Java.

S’applique à