CompareUtil.java

  1. package gov.usgs.earthquake.util;

  2. /**
  3.  * Utility class for comparing potentially null values.
  4.  */
  5. public class CompareUtil {

  6.   /**
  7.    * A method to simplify comparison of two values, either of which may be null.
  8.    *
  9.    * For purposes of this comparison, null values are > non-null values.
  10.    *
  11.    * @param a   value to compare
  12.    * @param b   value to compare
  13.    * @param <T> type
  14.    * @return -1, if a is not null and b is null; 0, if a is null and b is null; 1,
  15.    *         if a is null and b is not null; otherwise, a.compareTo(b).
  16.    */
  17.   public static <T extends Comparable<T>> int nullSafeCompare(final T a, final T b) {
  18.     if (a == null && b != null) {
  19.       // null > real values
  20.       return 1;
  21.     } else if (a != null && b == null) {
  22.       // real values < null
  23.       return -1;
  24.     } else if (a == null && b == null) {
  25.       // null == null
  26.       return 0;
  27.     } else {
  28.       // not null, use object compareTo
  29.       return a.compareTo(b);
  30.     }
  31.   }

  32. }