CompareUtil.java

package gov.usgs.earthquake.util;

/**
 * Utility class for comparing potentially null values.
 */
public class CompareUtil {

	/**
	 * A method to simplify comparison of two values, either of which may be
	 * null.
	 *
	 * For purposes of this comparison, null values are > non-null values.
	 *
	 * @param a
	 *            value to compare
	 * @param b
	 *            value to compare
	 * @param <T>
	 *            type
	 * @return -1, if a is not null and b is null; 0, if a is null and b is
	 *         null; 1, if a is null and b is not null; otherwise,
	 *         a.compareTo(b).
	 */
	public static <T extends Comparable<T>> int nullSafeCompare(final T a, final T b) {
		if (a == null && b != null) {
			// null > real values
			return 1;
		} else if (a != null && b == null) {
			// real values < null
			return -1;
		} else if (a == null && b == null) {
			// null == null
			return 0;
		} else {
			// not null, use object compareTo
			return a.compareTo(b);
		}
	}

}