org.springframework.util.comparator
Class NullSafeComparator<T>

java.lang.Object
  extended by org.springframework.util.comparator.NullSafeComparator<T>
All Implemented Interfaces:
java.util.Comparator<T>

public class NullSafeComparator<T>
extends java.lang.Object
implements java.util.Comparator<T>

A Comparator that will safely compare nulls to be lower or higher than other objects. Can decorate a given Comparator or work on Comparables.

Since:
1.2.2
Author:
Keith Donald, Juergen Hoeller
See Also:
Comparable

Field Summary
private  java.util.Comparator<T> nonNullComparator
           
static NullSafeComparator NULLS_HIGH
          A shared default instance of this comparator, treating nulls higher than non-null objects.
static NullSafeComparator NULLS_LOW
          A shared default instance of this comparator, treating nulls lower than non-null objects.
private  boolean nullsLow
           
 
Constructor Summary
private NullSafeComparator(boolean nullsLow)
          Create a NullSafeComparator that sorts null based on the provided flag, working on Comparables.
  NullSafeComparator(java.util.Comparator<T> comparator, boolean nullsLow)
          Create a NullSafeComparator that sorts null based on the provided flag, decorating the given Comparator.
 
Method Summary
 int compare(T o1, T o2)
           
 boolean equals(java.lang.Object obj)
           
 int hashCode()
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

NULLS_LOW

public static final NullSafeComparator NULLS_LOW
A shared default instance of this comparator, treating nulls lower than non-null objects.


NULLS_HIGH

public static final NullSafeComparator NULLS_HIGH
A shared default instance of this comparator, treating nulls higher than non-null objects.


nonNullComparator

private final java.util.Comparator<T> nonNullComparator

nullsLow

private final boolean nullsLow
Constructor Detail

NullSafeComparator

private NullSafeComparator(boolean nullsLow)
Create a NullSafeComparator that sorts null based on the provided flag, working on Comparables.

When comparing two non-null objects, their Comparable implementation will be used: this means that non-null elements (that this Comparator will be applied to) need to implement Comparable.

As a convenience, you can use the default shared instances: NullSafeComparator.NULLS_LOW and NullSafeComparator.NULLS_HIGH.

Parameters:
nullsLow - whether to treat nulls lower or higher than non-null objects
See Also:
Comparable, NULLS_LOW, NULLS_HIGH

NullSafeComparator

public NullSafeComparator(java.util.Comparator<T> comparator,
                          boolean nullsLow)
Create a NullSafeComparator that sorts null based on the provided flag, decorating the given Comparator.

When comparing two non-null objects, the specified Comparator will be used. The given underlying Comparator must be able to handle the elements that this Comparator will be applied to.

Parameters:
comparator - the comparator to use when comparing two non-null objects
nullsLow - whether to treat nulls lower or higher than non-null objects
Method Detail

compare

public int compare(T o1,
                   T o2)
Specified by:
compare in interface java.util.Comparator<T>

equals

public boolean equals(java.lang.Object obj)
Specified by:
equals in interface java.util.Comparator<T>
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object