实现Comparator对于基本布尔类型?(Implement Comparator for pri

2019-08-02 07:27发布

我需要一些类implements Comparator ,和一个我想要比较原始的boolean (非Boolean )值。

如果是A B oolean,我只想return boolA.compareTo(boolB); 这将返回0,-1或1但我怎么能做到这一点与原语?

Answer 1:

你可以看一下它是如何为实现java.lang.Boolean ,因为那类,自然,采用的是原始的布尔值,以及:

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


Answer 2:

由于Java 7,该逻辑马尔科Topolnik显示,他的回答已经进入另一种方法揭露了一种比较原始的boolean

Javadoc文档Boolean.compare(boolean x, boolean y)

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))


Answer 3:

您可以使用Java的自动装箱功能来缓解这个问题。 你可以读到这里自动装箱: Java的自动装箱



Answer 4:

一个更好的途径和正确使用布尔适配器类

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

编辑:

提示:这第一个排序“假”值。 如果要反转排序使用:

(-1 * Boolean.compare(lhs, rhs))


Answer 5:

你可以比较两个基本布尔值B1和B2在下面的方式。

(通过Boolean.valueOf(B1).equals(通过Boolean.valueOf(B2))



文章来源: Implement Comparator for primitive boolean type?