T
- the type of beans to be compared by this Comparator
public class BeanComparator<T> extends Object implements Comparator<T>, Serializable
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.
Constructor and Description |
---|
BeanComparator()
Constructs 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.
|
Modifier and Type | Method and Description |
---|---|
int |
compare(T o1,
T o2)
Compare two JavaBeans by their shared property.
|
boolean |
equals(Object o)
Two
BeanComparator 's are equals if and only if
the wrapped comparators and the property names to be compared
are equal. |
Comparator<?> |
getComparator()
Gets the Comparator being used to compare beans.
|
String |
getProperty()
Gets the property attribute of the BeanComparator
|
int |
hashCode()
Hashcode compatible with equals.
|
void |
setProperty(String property)
Sets the method to be called to compare two JavaBeans
|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
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.
public BeanComparator(String property)
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 a ComparableComparator
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
.
property
- String Name of a bean property, which may contain the
name of a simple, nested, indexed, mapped, or combined
property. See PropertyUtilsBean
for property query language syntax.
If the property passed in is null then the actual objects will be comparedpublic BeanComparator(String property, Comparator<?> comparator)
property
- Name of a bean property, can contain the name
of a simple, nested, indexed, mapped, or combined
property. See PropertyUtilsBean
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.public void setProperty(String property)
property
- String method name to call to compare
If the property passed in is null then the actual objects will be comparedpublic String getProperty()
public Comparator<?> getComparator()
public int compare(T o1, T o2)
getProperty()
is null then the actual objects will be compared.compare
in interface Comparator<T>
o1
- Object The first bean to get data from to compare againsto2
- Object The second bean to get data from to comparepublic boolean equals(Object o)
BeanComparator
's are equals if and only if
the wrapped comparators and the property names to be compared
are equal.equals
in interface Comparator<T>
equals
in class Object
o
- Comparator to compare toCopyright © 2000–2016 The Apache Software Foundation. All rights reserved.