Sprache

IComparable Schnittstelle

Definition

Diese Schnittstelle legt eine Gesamtrangfolge für die Objekte jeder Klasse fest, die sie implementiert.

[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
Abgeleitet
Attribute
Implementiert

Hinweise

Diese Schnittstelle legt eine Gesamtrangfolge für die Objekte jeder Klasse fest, die sie implementiert. Diese Sortierung wird als natürliche Sortierung der Klasse bezeichnet, und die Methode der Klasse compareTo wird als natürliche Vergleichsmethode bezeichnet.

Listen (und Arrays) von Objekten, die diese Schnittstelle implementieren, können automatisch nach Collections#sort(List) Collections.sort (und Arrays#sort(Object[]) Arrays.sort) sortiert werden. Objekte, die diese Schnittstelle implementieren, können als Schlüssel in einer sortierten SortedMap-Zuordnung oder als Elemente in einem sortierten Satz von SortedSet verwendet werden, ohne dass ein Comparator-Vergleichsator angegeben werden muss.

Die natürliche Sortierung für eine Klasse C wird als gleich angegeben, wenn und nur, wenn e1.compareTo(e2) == 0 derselbe boolesche Wert wie e1.equals(e2) für jede Klasse und e1 für jede e2 Klasse Cvorhanden ist. Beachten Sie, dass null es sich nicht um eine Instanz einer Klasse handelt, und e.compareTo(null) sie sollte auch dann ausgelöst NullPointerException werden, wenn e.equals(null) sie zurückgegeben falsewird.

Es wird dringend empfohlen (jedoch nicht erforderlich), dass natürliche Sortierungen gleich sind. Dies liegt daran, dass sich sortierte Sätze (und sortierte Karten) ohne explizite Vergleiche "seltsam" verhalten, wenn sie mit Elementen (oder Schlüsseln) verwendet werden, deren natürliche Anordnung mit den Gleichen inkonsistent ist. Insbesondere verstößt ein solcher sortierter Satz (oder eine sortierte Karte) gegen den allgemeinen Vertrag für Set (oder Karte), der in Bezug auf die equals Methode definiert ist.

Wenn beispielsweise einer sortierten Gruppe, die keinen expliziten Vergleich verwendet, zwei Schlüssel a hinzugefügt werden b(!a.equals(b) && a.compareTo(b) == 0) , gibt der zweite add Vorgang "false" (und die Größe des sortierten Satzes wird nicht erhöht) zurück, da a sie b aus sicht des sortierten Satzes gleichwertig sind.

Praktisch alle Java Kernklassen, die eine natürliche Sortierung implementierenComparable, die mit gleichen Gleichen konsistent sind. Eine Ausnahme ist java.math.BigDecimal, deren java.math.BigDecimal#compareTo natürliche Sortierung Objekte mit gleichen numerischen Werten und unterschiedlichen Darstellungen (z. B. 4,0 und 4,00) gleicht BigDecimal . Um java.math.BigDecimal#equals BigDecimal.equals() "true" zurückzugeben, muss die Darstellung und der numerische Wert der beiden BigDecimal Objekte identisch sein.

Für die mathematisch geneigte Beziehung , die die natürliche Reihenfolge einer bestimmten Klasse C definiert, lautet:

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

Der Quotient für diese Gesamtbestellung lautet:

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

Es folgt unmittelbar aus dem Vertrag dafürcompareTo, dass der Quotient eine ÄquivalenzbeziehungCist und dass die natürliche Reihenfolge eine Gesamtreihenfolge ist.C Wenn wir sagen, dass die natürliche Sortierung einer Klasse gleich ist, meinen wir, dass der Quotient für die natürliche Sortierung die Äquivalenzbeziehung ist, die durch die Methode der Klasse Object#equals(Object) equals(Object) definiert wird:

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

Anders ausgedrückt: Wenn die natürliche Sortierung einer Klasse gleich ist, sind die Äquivalenzklassen, die durch die Äquivalenzbeziehung der equals Methode und die durch den Quotienten der compareTo Methode definierten Äquivalenzklassen definiert sind, identisch.

Diese Schnittstelle ist ein Mitglied des Java Collections Framework.

In 1.2 hinzugefügt.

Java Dokumentation für java.lang.Comparable.

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Eigenschaften

Name Beschreibung
Handle

Ruft den JNI-Wert des zugrunde liegenden Android-Objekts ab.

(Geerbt von IJavaObject)
JniIdentityHashCode

Gibt den Wert java.lang.System.identityHashCode() für die umbrochene Instanz zurück.

(Geerbt von IJavaPeerable)
JniManagedPeerState

Status des verwalteten Peers.

(Geerbt von IJavaPeerable)
JniObjectReferenceControlBlock

Diese Schnittstelle legt eine Gesamtrangfolge für die Objekte jeder Klasse fest, die sie implementiert.

(Geerbt von IJavaPeerable)
JniPeerMembers

Mitgliedszugriff und Aufrufunterstützung.

(Geerbt von IJavaPeerable)
PeerReference

Gibt eine JniObjectReference der umbrochenen Java Objektinstanz zurück.

(Geerbt von IJavaPeerable)

Methoden

Name Beschreibung
CompareTo(Object)

Vergleicht dieses Objekt mit dem angegebenen Objekt für die Reihenfolge.

Disposed()

Wird aufgerufen, wenn die Instanz verworfen wurde.

(Geerbt von IJavaPeerable)
DisposeUnlessReferenced()

Wenn keine offenen Verweise auf diese Instanz vorhanden sind, wird nichts aufgerufen Dispose(). Andernfalls wird nichts ausgeführt.

(Geerbt von IJavaPeerable)
Finalized()

Wird aufgerufen, wenn die Instanz abgeschlossen wurde.

(Geerbt von IJavaPeerable)
SetJniIdentityHashCode(Int32)

Legen Sie den von JniIdentityHashCode.

(Geerbt von IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Diese Schnittstelle legt eine Gesamtrangfolge für die Objekte jeder Klasse fest, die sie implementiert.

(Geerbt von IJavaPeerable)
SetPeerReference(JniObjectReference)

Legen Sie den von PeerReference.

(Geerbt von IJavaPeerable)
UnregisterFromRuntime()

Heben Sie die Registrierung dieser Instanz auf, damit die Laufzeit sie nicht aus zukünftigen Java.Interop.JniRuntime+JniValueManager.PeekValue Aufrufen zurückgibt.

(Geerbt von IJavaPeerable)

Erweiterungsmethoden

Name Beschreibung
GetJniTypeName(IJavaPeerable)

Ruft den JNI-Namen des Typs der Instanz selfab.

JavaAs<TResult>(IJavaPeerable)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

JavaCast<TResult>(IJavaObject)

Führt eine android-laufzeitgecheckte Typkonvertierung aus.

JavaCast<TResult>(IJavaObject)

Diese Schnittstelle legt eine Gesamtrangfolge für die Objekte jeder Klasse fest, die sie implementiert.

TryJavaCast<TResult>(IJavaPeerable, TResult)

Versuchen Sie, die Eingabe selfzu TResult erzwingen, und überprüfen Sie, ob die Koersion auf der Java Seite gültig ist.

Gilt für: