IComparable Interfaccia
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
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 |
| 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 |
| Finalized() |
Chiamato quando l'istanza è stata finalizzata. (Ereditato da IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Impostare il valore restituito da |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Provare a digitare |
| 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 |