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

Reply via email to