|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--com.ibm.icu4jni.text.Collator
Abstract class handling locale specific collation via JNI and ICU. Subclasses implement specific collation strategies. One subclass, com.ibm.icu4jni.text.RuleBasedCollator, is currently provided and is applicable to a wide set of languages. Other subclasses may be created to handle more specialized needs. You can use the static factory method, getInstance(), to obtain the appropriate Collator object for a given 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. Five strengths in CollationAttribute are provided: VALUE_PRIMARY, VALUE_SECONDARY, VALUE_TERTIARY, VALUE_QUARTENARY and VALUE_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 "?" latin small letter e with circumflex 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 Strings exactly once, the compare method provides the best performance. When sorting a list of Strings however, it is generally necessary to compare each String multiple times. In this case, com.ibm.icu4jni.text.CollationKey provide better performance. The CollationKey class converts a String to a series of bits that can be compared bitwise against other CollationKeys. A CollationKey is created by a Collator object for a given String. Note: CollationKeys from different Collators can not be compared. Considerations : 1) ErrorCode not returned to user throw exceptions instead 2) Similar API to java.text.Collator
Field Summary | |
static int |
CANONICAL_DECOMPOSITION
Decomposition mode value. |
static int |
IDENTICAL
Smallest Collator strength value. |
static int |
NO_DECOMPOSITION
Decomposition mode value. |
static int |
PRIMARY
Strongest collator strength value. |
static int |
QUATERNARY
Fourth level collator strength value. |
static int |
RESULT_DEFAULT
accepted by most attributes |
static int |
RESULT_EQUAL
string a == string b |
static int |
RESULT_GREATER
string a > string b |
static int |
RESULT_LESS
string a < string b |
static int |
SECONDARY
Second level collator strength value. |
static int |
TERTIARY
Third level collator strength value. |
Constructor Summary | |
Collator()
|
Method Summary | |
abstract java.lang.Object |
clone()
Makes a copy of the current object. |
abstract int |
compare(java.lang.String source,
java.lang.String target)
The comparison function compares the character data stored in two different strings. |
abstract boolean |
equals(java.lang.Object target)
Checks if argument object is equals to this object. |
boolean |
equals(java.lang.String source,
java.lang.String target)
Locale dependent equality check for the argument strings. |
abstract int |
getAttribute(int type)
Gets the attribute to be used in comparison or transformation. |
abstract CollationKey |
getCollationKey(java.lang.String source)
Get the sort key as an CollationKey object from the argument string. |
abstract int |
getDecomposition()
Get the decomposition mode of this Collator. |
static Collator |
getInstance()
Factory method to create an appropriate Collator which uses the default locale collation rules. |
static Collator |
getInstance(java.util.Locale locale)
Factory method to create an appropriate Collator which uses the argument locale collation rules. |
abstract int |
getStrength()
Determines the minimum strength that will be use in comparison or transformation. |
abstract int |
hashCode()
Returns a hash of this collation object |
abstract void |
setAttribute(int type,
int value)
Sets the attribute to be used in comparison or transformation. |
abstract void |
setDecomposition(int mode)
Set the normalization mode used int this object The normalization mode influences how strings are compared. |
abstract void |
setStrength(int strength)
Sets the minimum strength to be used in comparison or transformation. |
Methods inherited from class java.lang.Object |
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final int PRIMARY
setStrength(int)
,
getStrength()
,
Constant Field Valuespublic static final int SECONDARY
setStrength(int)
,
getStrength()
,
Constant Field Valuespublic static final int TERTIARY
setStrength(int)
,
getStrength()
,
Constant Field Valuespublic static final int QUATERNARY
setStrength(int)
,
getStrength()
,
Constant Field Valuespublic static final int IDENTICAL
Smallest Collator strength value. When all other strengths are equal, the IDENTICAL strength is used as a tiebreaker. The Unicode code point values of the NFD form of each string are compared, just in case there is no difference. See class documentation for more explanation.
Note this value is different from JDK's
public static final int NO_DECOMPOSITION
Decomposition mode value. With NO_DECOMPOSITION set, Strings will not be decomposed for collation. This is the default decomposition setting unless otherwise specified by the locale used to create the Collator.
Note this value is different from the JDK's.
CANONICAL_DECOMPOSITION
,
getDecomposition()
,
setDecomposition(int)
,
Constant Field Valuespublic static final int CANONICAL_DECOMPOSITION
Decomposition mode value. With CANONICAL_DECOMPOSITION set, characters that are canonical variants according to the Unicode standard will be decomposed for collation.
CANONICAL_DECOMPOSITION corresponds to Normalization Form D as described in Unicode Technical Report #15.
NO_DECOMPOSITION
,
getDecomposition()
,
setDecomposition(int)
,
Constant Field Valuespublic static final int RESULT_EQUAL
public static final int RESULT_GREATER
public static final int RESULT_LESS
public static final int RESULT_DEFAULT
Constructor Detail |
public Collator()
Method Detail |
public static Collator getInstance()
public static Collator getInstance(java.util.Locale locale)
locale
- to be used for collation
public boolean equals(java.lang.String source, java.lang.String target)
source
- stringtarget
- string
public abstract boolean equals(java.lang.Object target)
equals
in class java.lang.Object
target
- object
public abstract java.lang.Object clone() throws java.lang.CloneNotSupportedException
clone
in class java.lang.Object
java.lang.CloneNotSupportedException
public abstract int compare(java.lang.String source, java.lang.String target)
Example of use:
. Collator myCollation = Collator.getInstance(Locale::US); . myCollation.setStrength(CollationAttribute.VALUE_PRIMARY); . // result would be CollationAttribute.VALUE_EQUAL . // ("abc" == "ABC") . // (no primary difference between "abc" and "ABC") . int result = myCollation.compare("abc", "ABC",3); . myCollation.setStrength(CollationAttribute.VALUE_TERTIARY); . // result would be Collation.LESS (abc" <<< "ABC") . // (with tertiary difference between "abc" and "ABC") . int result = myCollation.compare("abc", "ABC",3);
source
- source string.target
- target string.
public abstract int getDecomposition()
CANONICAL_DECOMPOSITION
,
NO_DECOMPOSITION
public abstract void setDecomposition(int mode)
mode
- desired normalization modeCANONICAL_DECOMPOSITION
,
NO_DECOMPOSITION
public abstract int getStrength()
E.g. with strength == SECONDARY, the tertiary difference is ignored
E.g. with strength == PRIMARY, the secondary and tertiary difference are ignored.
PRIMARY
,
SECONDARY
,
TERTIARY
,
QUATERNARY
,
IDENTICAL
public abstract int getAttribute(int type)
type
- the attribute to be set from CollationAttribute
public abstract void setStrength(int strength)
Example of use:
. Collator myCollation = Collator.createInstance(Locale::US); . myCollation.setStrength(PRIMARY); . // result will be "abc" == "ABC" . // tertiary differences will be ignored . int result = myCollation->compare("abc", "ABC");
strength
- the new comparison level.PRIMARY
,
SECONDARY
,
TERTIARY
,
QUATERNARY
,
IDENTICAL
public abstract void setAttribute(int type, int value)
Example of use:
. Collator myCollation = Collator.createInstance(Locale::US); . myCollation.setAttribute(CollationAttribute.CASE_LEVEL, . CollationAttribute.VALUE_ON); . int result = myCollation->compare("\\u30C3\\u30CF", . "\\u30C4\\u30CF"); . // result will be Collator.RESULT_LESS.
type
- the attribute to be set from CollationAttributevalue
- attribute value from CollationAttributepublic abstract CollationKey getCollationKey(java.lang.String source)
Collator collator = Collator.getInstance();
CollationKey collationkey = collator.getCollationKey("string");
byte[] array = collationkey.toByteArray();
source
- string to be processed.
public abstract int hashCode()
hashCode
in class java.lang.Object
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |