IComparable Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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 |
| 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 |
| Finalized() |
Wird aufgerufen, wenn die Instanz abgeschlossen wurde. (Geerbt von IJavaPeerable) |
| SetJniIdentityHashCode(Int32) |
Legen Sie den von |
| 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 |
| 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 |
| JavaAs<TResult>(IJavaPeerable) |
Versuchen Sie, die Eingabe |
| 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 |