The Collator
class performs locale-sensitive
String
comparison. You use this class to build
searching and sorting routines for natural language text.
Collator
is an abstract base class. Subclasses
implement specific collation strategies. One subclass,
RuleBasedCollator
, is currently provided with
the Java Platform and is applicable to a wide set of languages. Other
subclasses may be created to handle more specialized needs.
Like other locale-sensitive classes, you can use the static
factory method, getInstance
, to obtain the appropriate
Collator
object for a given locale. You will only need
to look at the subclasses of Collator
if you need
to understand the details of a particular collation strategy or
if you need to modify that strategy.
The following example shows how to compare two strings using
the Collator
for the default locale.
// Compare two strings in the default locale Collator myCollator = Collator.getInstance(); if( myCollator.compare("abc", "ABC") < 0 ) System.out.println("abc is less than ABC"); else System.out.println("abc is greater than or equal to ABC");
You can set a Collator
's strength property
to determine the level of difference considered significant in
comparisons. Four strengths are provided: PRIMARY
,
SECONDARY
, TERTIARY
, and IDENTICAL
.
The exact assignment of strengths to language features is
locale dependant. For example, in Czech, "e" and "f" are considered
primary differences, while "e" and "ě" are secondary differences,
"e" and "E" are tertiary differences and "e" and "e" are identical.
The following shows how both case and accents could be ignored for
US English.
//Get the Collator for US English and set its strength to PRIMARY Collator usCollator = Collator.getInstance(Locale.US); usCollator.setStrength(Collator.PRIMARY); if( usCollator.compare("abc", "ABC") == 0 ) { System.out.println("Strings are equivalent"); }
For comparing String
s exactly once, the compare
method provides the best performance. When sorting a list of
String
s however, it is generally necessary to compare each
String
multiple times. In this case, CollationKey
s
provide better performance. The CollationKey
class converts
a String
to a series of bits that can be compared bitwise
against other CollationKey
s. A CollationKey
is
created by a Collator
object for a given String
.
Note: CollationKey
s from different
Collator
s can not be compared. See the class description
for CollationKey
for an example using CollationKey
s.
Constant Summary
int | CANONICAL_DECOMPOSITION | Constant used to specify the decomposition rule. |
int | FULL_DECOMPOSITION | Constant used to specify the decomposition rule. |
int | IDENTICAL | Constant used to specify the collation strength. |
int | NO_DECOMPOSITION | Constant used to specify the decomposition rule. |
int | PRIMARY | Constant used to specify the collation strength. |
int | SECONDARY | Constant used to specify the collation strength. |
int | TERTIARY | Constant used to specify the collation strength. |
Public Constructor Summary
Collator()
|
Public Method Summary
Object |
clone()
Creates and returns a copy of this
Object . |
int | |
abstract int | |
boolean | |
static Locale[] |
getAvailableLocales()
Returns an array of locales for which custom
Collator instances
are available. |
abstract CollationKey |
getCollationKey(String string)
Returns a
CollationKey for the specified string for this collator
with the current decomposition rule and strength value. |
abstract int |
getDecomposition()
Returns the decomposition rule for this collator.
|
static Collator |
getInstance()
Returns a
Collator instance which is appropriate for the user's default
Locale . |
static Collator | |
abstract int |
getStrength()
Returns the strength value for this collator.
|
abstract void |
setDecomposition(int value)
Sets the decomposition rule for this collator.
|
abstract void |
setStrength(int value)
Sets the strength value for this collator.
|
Inherited Method Summary
Constants
public static final int CANONICAL_DECOMPOSITION
Constant used to specify the decomposition rule.
public static final int FULL_DECOMPOSITION
Constant used to specify the decomposition rule. This value for decomposition is not supported.
public static final int IDENTICAL
Constant used to specify the collation strength.
public static final int NO_DECOMPOSITION
Constant used to specify the decomposition rule.
public static final int PRIMARY
Constant used to specify the collation strength.
public static final int SECONDARY
Constant used to specify the collation strength.
public static final int TERTIARY
Constant used to specify the collation strength.
Public Constructors
public Collator ()
Public Methods
public Object clone ()
Creates and returns a copy of this Object
. The default
implementation returns a so-called "shallow" copy: It creates a new
instance of the same class and then copies the field values (including
object references) from this instance to the new instance. A "deep" copy,
in contrast, would also recursively clone nested objects. A subclass that
needs to implement this kind of cloning should call super.clone()
to create the new instance and then create deep copies of the nested,
mutable objects.
Returns
- a copy of this object.
public int compare (Object object1, Object object2)
Compares two objects to determine their relative order. The objects must be strings.
Parameters
object1 | the first string to compare. |
---|---|
object2 | the second string to compare. |
Returns
- a negative value if
object1
is less thanobject2
, 0 if they are equal, and a positive value ifobject1
is greater thanobject2
.
Throws
ClassCastException | if object1 or object2 is not a String .
|
---|
public abstract int compare (String string1, String string2)
Compares two strings to determine their relative order.
Parameters
string1 | the first string to compare. |
---|---|
string2 | the second string to compare. |
Returns
- a negative value if
string1
is less thanstring2
, 0 if they are equal and a positive value ifstring1
is greater thanstring2
.
public boolean equals (String string1, String string2)
Compares two strings using the collation rules to determine if they are equal.
Parameters
string1 | the first string to compare. |
---|---|
string2 | the second string to compare. |
Returns
true
ifstring1
andstring2
are equal using the collation rules, false otherwise.
public static Locale[] getAvailableLocales ()
Returns an array of locales for which custom Collator
instances
are available.
Note that Android does not support user-supplied locale service providers.
public abstract CollationKey getCollationKey (String string)
Returns a CollationKey
for the specified string for this collator
with the current decomposition rule and strength value.
Parameters
string | the source string that is converted into a collation key. |
---|
Returns
- the collation key for
string
.
public abstract int getDecomposition ()
Returns the decomposition rule for this collator.
Returns
- the decomposition rule, either
NO_DECOMPOSITION
orCANONICAL_DECOMPOSITION
.FULL_DECOMPOSITION
is not supported.
public static Collator getInstance ()
Returns a Collator
instance which is appropriate for the user's default
Locale
.
See "Be wary of the default locale".
public static Collator getInstance (Locale locale)
Returns a Collator
instance which is appropriate for locale
.
Parameters
locale |
---|
public abstract int getStrength ()
Returns the strength value for this collator.
Returns
- the strength value, either PRIMARY, SECONDARY, TERTIARY or IDENTICAL.
public abstract void setDecomposition (int value)
Sets the decomposition rule for this collator.
Parameters
value | the decomposition rule, either NO_DECOMPOSITION or
CANONICAL_DECOMPOSITION . FULL_DECOMPOSITION
is not supported. |
---|
Throws
IllegalArgumentException | if the provided decomposition rule is not valid. This includes
FULL_DECOMPOSITION .
|
---|
public abstract void setStrength (int value)
Sets the strength value for this collator.
Parameters
value | the strength value, either PRIMARY, SECONDARY, TERTIARY, or IDENTICAL. |
---|
Throws
IllegalArgumentException | if the provided strength value is not valid. |
---|