Implementieren Komparator für den primitiven Typ boolean?
Brauche ich einige Klassen implements Comparator
, und für eine, die ich vergleichen möchten primitive boolean
(nicht Boolean
) Werte.
WENN es ein Boolean, würde ich einfach return boolA.compareTo(boolB);
was wieder 0, -1 oder 1. Aber wie kann ich das mit primitiven?
haben Sie schon von autoboxing?
Es ist eine leichte performance-Einbußen für autoboxing, also OP kann immer noch lieber zu schreiben die raw-code.
Komparator nicht nehmen primitiven Typen. Das war die Frage.
Alle möglichen
Ja, ich habe das berücksichtigt. Der hit ist wirklich leicht (man muss dereferenzieren der
Es ist eine leichte performance-Einbußen für autoboxing, also OP kann immer noch lieber zu schreiben die raw-code.
Komparator nicht nehmen primitiven Typen. Das war die Frage.
Alle möglichen
boolean
als ein Objekt im Cache zwischengespeichert, auto-Boxen können nicht so viel Kosten, als Sie erwarten. Hinweis: Jede mögliche byte
zwischengespeichert.Ja, ich habe das berücksichtigt. Der hit ist wirklich leicht (man muss dereferenzieren der
Boolean
- Konstante) und ist wahrscheinlich nicht Wert, den zusätzlichen code.InformationsquelleAutor membersound | 2012-11-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nachschlagen, wie es implementiert ist, für die
java.lang.Boolean
, da die Klasse natürlich, verwendet einen primitiven boolean:InformationsquelleAutor Marko Topolnik
Seit Java 7, die Logik, die Marko Topolnik zeigte sich in seiner Antwort verschoben hat, in eine andere Methode, um aufzudecken ein Weg, zu vergleichen primitive
boolean
.Javadoc für
Boolean.vergleichen(boolean x, boolean y)
:Nein, es ist nicht. Souce code ist, wie dies (zumindest in Java 8): public static int vergleichen(boolean x, boolean y) { return (x == y) ? 0 : (x ? 1 : -1); }
Ja, Wim Deblauwe korrekt ist. Die Javadoc erklärt, dass es identisch auf das Ergebnis, wenn Sie Ihnen im Vergleich zu Objekten. Wenn Sie einen Blick auf Marko Topolnik s und der Quell-code in die Oracle JDK, werden Sie sehen, dass die Oracle-Implementierung ist die gleiche, die gleichen sind.
InformationsquelleAutor mkobit
Können Sie java autoboxing-feature, dieses problem zu lindern. Sie können Lesen Sie über autoboxing hier: Java autoboxing
InformationsquelleAutor Adam Arold
Einen noch besseren Ansatz und der richtigen Verwendung von Boolean-Adapter-Klasse
EDIT:
Hinweis: Dies sortiert die "falschen" Werte ersten. Wenn Sie möchten, kehren Sie die Sortierung verwenden:
InformationsquelleAutor Code.IT
Vergleichen Sie zwei primitiven booleschen Werte b1 und b2 in der folgenden Weise.
(Boolean.valueOf(b1).equals(Boolean.valueOf(b2))
InformationsquelleAutor Srikar