Class BeanComparator<T>
- Type Parameters:
T
- the type of beans to be compared by thisComparator
- All Implemented Interfaces:
Serializable
,Comparator<T>
This comparator compares two beans by the specified bean property.
It is also possible to compare beans based on nested, indexed,
combined, mapped bean properties. Please see the PropertyUtilsBean
documentation for all property name possibilities.
Note: The BeanComparator passes the values of the specified
bean property to a ComparableComparator, if no comparator is
specified in the constructor. If you are comparing two beans based
on a property that could contain "null" values, a suitable Comparator
or ComparatorChain
should be supplied in the constructor.
Note that the passed in Comparator
must be able to handle the
passed in objects. Because the type of the property to be compared is not
known at compile time no type checks can be performed by the compiler.
Thus ClassCastException
exceptions can be thrown if unexpected
property values occur.
- Version:
- $Id$
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a Bean Comparator without a property set.BeanComparator
(String property) Constructs a property-based comparator for beans.BeanComparator
(String property, Comparator<?> comparator) Constructs a property-based comparator for beans. -
Method Summary
Modifier and TypeMethodDescriptionint
Compare two JavaBeans by their shared property.boolean
TwoBeanComparator
's are equals if and only if the wrapped comparators and the property names to be compared are equal.Comparator
<?> Gets the Comparator being used to compare beans.Gets the property attribute of the BeanComparatorint
hashCode()
Hashcode compatible with equals.private int
internalCompare
(Object val1, Object val2) Compares the given values using the internalComparator
.void
setProperty
(String property) Sets the method to be called to compare two JavaBeansMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
property
-
comparator
-
-
Constructor Details
-
BeanComparator
public BeanComparator()Constructs a Bean Comparator without a property set.
Note that this is intended to be used only in bean-centric environments.
Until
setProperty(java.lang.String)
is called with a non-null value. this comparator will compare the Objects only. -
BeanComparator
Constructs a property-based comparator for beans. This compares two beans by the property specified in the property parameter. This constructor creates a
BeanComparator
that uses aComparableComparator
to compare the property values.Passing "null" to this constructor will cause the BeanComparator to compare objects based on natural order, that is
java.lang.Comparable
.- Parameters:
property
- String Name of a bean property, which may contain the name of a simple, nested, indexed, mapped, or combined property. SeePropertyUtilsBean
for property query language syntax. If the property passed in is null then the actual objects will be compared
-
BeanComparator
Constructs a property-based comparator for beans. This constructor creates a BeanComparator that uses the supplied Comparator to compare the property values.- Parameters:
property
- Name of a bean property, can contain the name of a simple, nested, indexed, mapped, or combined property. SeePropertyUtilsBean
for property query language syntax.comparator
- BeanComparator will pass the values of the specified bean property to this Comparator. If your bean property is not a comparable or contains null values, a suitable comparator may be supplied in this constructor.
-
-
Method Details
-
setProperty
Sets the method to be called to compare two JavaBeans- Parameters:
property
- String method name to call to compare If the property passed in is null then the actual objects will be compared
-
getProperty
Gets the property attribute of the BeanComparator- Returns:
- String method name to call to compare. A null value indicates that the actual objects will be compared
-
getComparator
Gets the Comparator being used to compare beans.- Returns:
- the Comparator being used to compare beans
-
compare
Compare two JavaBeans by their shared property. IfgetProperty()
is null then the actual objects will be compared.- Specified by:
compare
in interfaceComparator<T>
- Parameters:
o1
- Object The first bean to get data from to compare againsto2
- Object The second bean to get data from to compare- Returns:
- int negative or positive based on order
-
equals
TwoBeanComparator
's are equals if and only if the wrapped comparators and the property names to be compared are equal.- Specified by:
equals
in interfaceComparator<T>
- Overrides:
equals
in classObject
- Parameters:
o
- Comparator to compare to- Returns:
- whether the the comparators are equal or not
-
hashCode
public int hashCode()Hashcode compatible with equals. -
internalCompare
Compares the given values using the internalComparator
. Note: This comparison cannot be performed in a type-safe way; soClassCastException
exceptions may be thrown.- Parameters:
val1
- the first value to be comparedval2
- the second value to be compared- Returns:
- the result of the comparison
-