IComparable Interfaccia

Definizione

Questa interfaccia impone un ordinamento totale sugli oggetti di ogni classe che la implementa.

[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
Derivato
Attributi
Implementazioni

Commenti

Questa interfaccia impone un ordinamento totale sugli oggetti di ogni classe che la implementa. Questo ordinamento viene definito ordinamento naturale della classe e il metodo della classe viene definito metodo di compareToconfronto naturale.

Gli elenchi (e le matrici) di oggetti che implementano questa interfaccia possono essere ordinati automaticamente in Collections#sort(List) Collections.sort base a (e Arrays#sort(Object[]) Arrays.sort). Gli oggetti che implementano questa interfaccia possono essere usati come chiavi in una mappa ordinata SortedMap o come elementi in un set ordinato SortedSet, senza la necessità di specificare un comparatore di confronto.

L'ordinamento naturale per una classe C viene detto coerente con uguale a se e solo se e1.compareTo(e2) == 0 ha lo stesso valore booleano di e1.equals(e2) per ogni e1 classe e e2 di classe C. Si noti che null non è un'istanza di alcuna classe e e.compareTo(null) deve generare un'eccezione NullPointerException anche se e.equals(null) restituisce false.

È consigliabile (anche se non necessario) che gli ordini naturali siano coerenti con gli uguali. Ciò è dovuto al fatto che i set ordinati (e le mappe ordinate) senza confronti espliciti si comportano "stranamente" quando vengono usati con elementi (o chiavi) il cui ordinamento naturale è incoerente con uguale. In particolare, tale set ordinato (o mappa ordinata) viola il contratto generale per set (o mappa), definito in termini di equals metodo.

Ad esempio, se uno aggiunge due chiavi a e b tale che a un set ordinato che (!a.equals(b) && a.compareTo(b) == 0) non usa un confronto esplicito, la seconda add operazione restituisce false (e le dimensioni del set ordinato non aumentano) perché a e b sono equivalenti dal punto di vista del set ordinato.

Praticamente tutte le classi di base Java che implementano Comparable hanno ordinamenti naturali coerenti con uguali. Un'eccezione è java.math.BigDecimal, il cui java.math.BigDecimal#compareTo l'ordinamento naturale equivale BigDecimal a oggetti con valori numerici uguali e rappresentazioni diverse (ad esempio 4.0 e 4.00). Per java.math.BigDecimal#equals BigDecimal.equals() restituire true, la rappresentazione e il valore numerico dei due BigDecimal oggetti devono essere uguali.

Per l'inclinazione matematica, la relazione che definisce l'ordinamento naturale in una determinata classe C è:

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

Il quoziente per questo ordine totale è:

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

Segue immediatamente dal contratto per compareTo che il quoziente è una relazione di equivalenza su Ce che l'ordinamento naturale è un ordine totale su C. Quando si dice che l'ordinamento naturale di una classe è coerente con uguale, si intende che il quoziente per l'ordinamento naturale è la relazione di equivalenza definita dal metodo della Object#equals(Object) equals(Object) classe:

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

In altre parole, quando l'ordinamento naturale di una classe è coerente con uguale, le classi di equivalenza definite dalla relazione di equivalenza del equals metodo e le classi di equivalenza definite dal quoziente del compareTo metodo sono uguali.

Questa interfaccia è un membro di Java Collections Framework.

Aggiunta nella versione 1.2.

per java.lang.Comparable.

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Proprietà

Nome Descrizione
Handle

Ottiene il valore JNI dell'oggetto Android sottostante.

(Ereditato da IJavaObject)
JniIdentityHashCode

Restituisce il valore di java.lang.System.identityHashCode() per l'istanza di cui è stato eseguito il wrapping.

(Ereditato da IJavaPeerable)
JniManagedPeerState

Stato del peer gestito.

(Ereditato da IJavaPeerable)
JniPeerMembers

Supporto per l'accesso ai membri e la chiamata.

(Ereditato da IJavaPeerable)
PeerReference

Restituisce un JniObjectReference oggetto dell'istanza dell'oggetto di cui è stato eseguito il wrapping Java.

(Ereditato da IJavaPeerable)

Metodi

Nome Descrizione
CompareTo(Object)

Confronta questo oggetto con l'oggetto specificato per l'ordine.

Disposed()

Chiamato quando l'istanza è stata eliminata.

(Ereditato da IJavaPeerable)
DisposeUnlessReferenced()

Se non sono presenti riferimenti in sospeso a questa istanza, chiama Dispose(); in caso contrario, non esegue alcuna operazione.

(Ereditato da IJavaPeerable)
Finalized()

Chiamato quando l'istanza è stata finalizzata.

(Ereditato da IJavaPeerable)
SetJniIdentityHashCode(Int32)

Impostare il valore restituito da JniIdentityHashCode.

(Ereditato da IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Questa interfaccia impone un ordinamento totale sugli oggetti di ogni classe che la implementa.

(Ereditato da IJavaPeerable)
SetPeerReference(JniObjectReference)

Impostare il valore restituito da PeerReference.

(Ereditato da IJavaPeerable)
UnregisterFromRuntime()

Annullare la registrazione di questa istanza in modo che il runtime non lo restituisca dalle chiamate future Java.Interop.JniRuntime+JniValueManager.PeekValue .

(Ereditato da IJavaPeerable)

Metodi di estensione

Nome Descrizione
GetJniTypeName(IJavaPeerable)

Ottiene il nome JNI del tipo dell'istanza selfdi .

JavaAs<TResult>(IJavaPeerable)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

JavaCast<TResult>(IJavaObject)

Esegue una conversione del tipo di tipo controllato dal runtime Android.

JavaCast<TResult>(IJavaObject)

Questa interfaccia impone un ordinamento totale sugli oggetti di ogni classe che la implementa.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Provare a digitare selfTResult, verificando che la coercizione sia valida sul lato Java.

Si applica a