为基元布尔类型实现比较器?
2022-09-02 02:48:51
我需要一些类,对于一个类,我想比较原始(不是)值。implements Comparator
boolean
Boolean
如果它是一个Boolean,我会返回0,-1或1。但是我怎么能用基元做到这一点呢?return boolA.compareTo(boolB);
我需要一些类,对于一个类,我想比较原始(不是)值。implements Comparator
boolean
Boolean
如果它是一个Boolean,我会返回0,-1或1。但是我怎么能用基元做到这一点呢?return boolA.compareTo(boolB);
您可以查找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
Javadoc for 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))