21

私はいくつかのクラスが必要です.1つは、プリミティブな(ではない)値implements Comparatorを比較したいです。booleanBoolean

ブール値の場合、0、-1、または 1 を返すものだけを返します。しかし、プリミティブreturn boolA.compareTo(boolB);でこれを行うにはどうすればよいでしょうか。

4

5 に答える 5

29

java.lang.Booleanそのクラスは当然、プリミティブブール値も使用するため、 の実装方法を調べることができます。

public int compareTo(Boolean b) {
    return (b.value == value ? 0 : (value ? 1 : -1));
}

Java 7 以降では、組み込みの静的メソッドを簡単に使用できますBoolean.compare(a, b)

于 2012-11-05T09:54:22.183 に答える
5

Boolean-Adapter クラスのさらに優れたアプローチと正しい使用

public int compare(boolean lhs, boolean rhs) {
    return Boolean.compare(lhs, rhs);
}

編集:

ヒント: これにより、「偽」の値が最初にソートされます。並べ替えを逆にしたい場合は、次のように使用します。

(-1 * Boolean.compare(lhs, rhs))
于 2018-06-11T08:38:15.657 に答える