[英]Implement Comparator for primitive boolean type?
我需要一些類implements Comparator
,對於其中一個我想比較原始boolean
(不是Boolean
)值。
如果它是一個布爾值,我會返回boolA.compareTo return boolA.compareTo(boolB);
這將返回 0、-1 或 1。但是我怎樣才能用原語做到這一點呢?
您可以查看它是如何為java.lang.Boolean
實現的,因為該類自然也使用原始布爾值:
public int compareTo(Boolean b) {
return (b.value == value ? 0 : (value ? 1 : -1));
}
從 Java 7 開始,您可以簡單地使用內置靜態方法Boolean.compare(a, b)
。
從 Java 7 開始, Marko Topolnik 在他的回答中展示的邏輯已經轉移到另一種方法中,以公開一種比較原始boolean
的方法。
Boolean.compare(boolean x, boolean y)
的 Javadoc :
public static int compare(boolean x, boolean y)
Compares two boolean values. The value returned is identical to
what would be returned by:
Boolean.valueOf(x).compareTo(Boolean.valueOf(y))
更好的方法和正確使用 Boolean-Adapter 類
public int compare(boolean lhs, boolean rhs) {
return Boolean.compare(lhs, rhs);
}
編輯:
提示:這首先對“假”值進行排序。 如果你想反轉排序使用:
(-1 * Boolean.compare(lhs, rhs))
您可以使用 java 的自動裝箱功能來緩解這個問題。 您可以在此處閱讀有關自動裝箱的信息: Java 自動裝箱
您可以通過以下方式比較兩個原始布爾值 b1 和 b2。
(Boolean.valueOf(b1).equals(Boolean.valueOf(b2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.