Maybe I'm missing something obvious but commons lang does not seem to
provide a null safe compare method for comparable objects.
My apologies if this functionality exists somewhere in commons lang and I'm
being brain dead with regards to locating it.
It seems like a really obvious addition, code would probably look like
// In ObjectUtils.
/**
* Compare two Comparable objects for order.
*
* This method is null safe. Null is considered to be less than all other
objects.
*
* @param a the first object to be compared.
* @param b the second object to be compared.
* @return a negative integer, zero, or a positive integer as the first
argument is less than, equal to, or greater than the second.
*/
public int compare(Comparable a, Comparable b) {
return compare(a,b,true);
}
/**
* Compare two Comparable objects for order.
*
* This method is null safe. Null is considered to be less than all other
objects if nullfirst is true, else
* it is considered to be greater than all other objects.
*
* @param a the first object to be compared.
* @param b the second object to be compared.
* @param nullfirst
* @return a negative integer, zero, or a positive integer as the first
argument is less than, equal to, or greater than the second.
*/
public int compare(Comparable a, Comparable b, boolean nullfirst) {
// Deal with the case both a, b are null or they are both equal first.
if (a == b) {
return 0;
} else if (a == null) {
return nullfirst ? -1 : 1;
} else if (b == null) {
return nullfirst ? 1 : -1;
} else {
return a.compareTo(b);
}
}
-Antony