簡體   English   中英

為原始布爾類型實現比較器?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM