public abstract class FastComparator<T> extends java.lang.Object implements java.util.Comparator<T>, XMLSerializable
This class represents a comparator to be used for equality as well as
for ordering; instances of this class provide a hashcode function
consistent with equal (if two objects are equal
, they have the same hashcode
),
equality with null
values is supported.
FastComparator
can be employed with FastMap
(e.g. custom
key comparators for identity maps, value retrieval using keys of a
different class that the map keys) or with FastCollection
classes.
Modifier and Type | Field and Description |
---|---|
static FastComparator<java.lang.Object> |
DEFAULT
Holds the default object comparator; rehash is performed if the
system hash code (platform dependent) is not evenly distributed.
|
static FastComparator<java.lang.Object> |
DIRECT
Holds the direct object comparator; no rehash is performed.
|
static FastComparator<java.lang.Object> |
IDENTITY
Holds the identity comparator; poorly distributed system hashcodes are
rehashed.
|
static FastComparator<java.lang.CharSequence> |
LEXICAL
Holds a lexicographic comparator for any
CharSequence or
String instances. |
static FastComparator<java.lang.Object> |
REHASH
Holds the comparator for objects with uneven hash distribution; objects
hashcodes are rehashed.
|
static Configurable<java.lang.Boolean> |
REHASH_SYSTEM_HASHCODE
Indicates if the system hash code should be rehashed
(see
Javolution Configuration for details).
|
static FastComparator<java.lang.String> |
STRING
Holds a fast comparator for
java.lang.String . |
Constructor and Description |
---|
FastComparator() |
Modifier and Type | Method and Description |
---|---|
abstract boolean |
areEqual(T o1,
T o2)
Indicates if the specified objects can be considered equal.
|
abstract int |
compare(T o1,
T o2)
Compares the specified objects for order.
|
abstract int |
hashCodeOf(T obj)
Returns the hash code for the specified object (consistent with
areEqual(T, T) ). |
public static final Configurable<java.lang.Boolean> REHASH_SYSTEM_HASHCODE
public static final FastComparator<java.lang.Object> DEFAULT
public static final FastComparator<java.lang.Object> DIRECT
equal
if and
only if o1.equals(o2)
. The compare(T, T)
method
throws ClassCastException
if the specified objects are not
Comparable
.public static final FastComparator<java.lang.Object> REHASH
equal
if and only if o1.equals(o2)
.
The compare(T, T)
method throws ClassCastException
if the
specified objects are not Comparable
.public static final FastComparator<java.lang.String> STRING
java.lang.String
. Hashcodes
are calculated by taking a sample of few characters instead of
the whole string.public static final FastComparator<java.lang.Object> IDENTITY
equal
if and only if (o1 == o2)
. The compare(T, T)
method
throws ClassCastException
if the specified objects are not
Comparable
.public static final FastComparator<java.lang.CharSequence> LEXICAL
CharSequence
or
String
instances.
Two objects are considered equal
if and only if they
represents the same character sequence). The hashcode is calculated
using the following formula (same as for java.lang.String
):
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
public abstract int hashCodeOf(T obj)
areEqual(T, T)
). Two objects considered equal
have
the same hash code.obj
- the object to return the hashcode for.public abstract boolean areEqual(T o1, T o2)
o1
- the first object (or null
).o2
- the second object (or null
).true
if both objects are considered equal;
false
otherwise.public abstract int compare(T o1, T o2)
compare
in interface java.util.Comparator<T>
o1
- the first object.o2
- the second object.java.lang.NullPointerException
- if any of the specified object is
null
.Copyright © 2005 - 2007 Javolution.