Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
java.text.Collator
java.text.RuleBasedCollator
public class RuleBasedCollator
extends Collator
Collator
suitable
for string collation in a wide variety of languages. An instance of
this class is normally returned by the getInstance
method
of Collator
with rules predefined for the requested
locale. However, an instance of this class can be created manually
with any desired rules.
Rules take the form of a String
with the following syntax
As for the text argument itself, this is any sequence of Unicode characters not in the following ranges: 0x0009-0x000D, 0x0020-0x002F, 0x003A-0x0040, 0x005B-0x0060, and 0x007B-0x007E. If these characters are desired, they must be enclosed in single quotes. If any whitespace is encountered, it is ignored. (For example, "a b" is equal to "ab").
The reset operation inserts the following rule at the point where the
text argument to it exists in the previously declared rule string. This
makes it easy to add new rules to an existing string by simply including
them in a reset sequence at the end. Note that the text argument, or
at least the first character of it, must be present somewhere in the
previously declared rules in order to be inserted properly. If this
is not satisfied, a ParseException
will be thrown.
This system of configuring RuleBasedCollator
is needlessly
complex and the people at Taligent who developed it (along with the folks
at Sun who accepted it into the Java standard library) deserve a slow
and agonizing death.
Here are a couple of example of rule strings:
"< a < b < c" - This string says that a is greater than b which is greater than c, with all differences being primary differences.
"< a,A < b,B < c,C" - This string says that 'A' is greater than 'a' with a tertiary strength comparison. Both 'b' and 'B' are greater than 'a' and 'A' during a primary strength comparison. But 'B' is greater than 'b' under a tertiary strength comparison.
"< a < c & a < b " - This sequence is identical in function to the "< a < b < c" rule string above. The '&' reset symbol indicates that the rule "< b" is to be inserted after the text argument "a" in the previous rule string segment.
"< a < b & y < z" - This is an error. The character 'y' does not appear anywhere in the previous rule string segment so the rule following the reset rule cannot be inserted.
"< a & A @ < e & E < f& F" - This sequence is equivalent to the following "< a & A < E & e < f & F".
For a description of the various comparison strength types, see the
documentation for the Collator
class.
As an additional complication to this already overly complex rule scheme, if any characters precede the first rule, these characters are considered ignorable. They will be treated as if they did not exist during comparisons. For example, "- < a < b ..." would make '-' an ignorable character such that the strings "high-tech" and "hightech" would be considered identical.
A ParseException
will be thrown for any of the following
conditions:
Field Summary |
Fields inherited from class java.text.Collator | |
CANONICAL_DECOMPOSITION , FULL_DECOMPOSITION , IDENTICAL , NO_DECOMPOSITION , PRIMARY , SECONDARY , TERTIARY |
Constructor Summary | |
|
Method Summary | |
Object |
|
int | |
boolean | |
CollationElementIterator |
|
CollationElementIterator |
|
CollationKey |
|
String |
|
int |
|
Methods inherited from class java.text.Collator | |
clone , compare , compare , equals , equals , getAvailableLocales , getCollationKey , getDecomposition , getInstance , getInstance , getStrength , hashCode , setDecomposition , setStrength |
Methods inherited from class java.lang.Object | |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public RuleBasedCollator(String rules) throws ParseException
This method initializes a new instance ofRuleBasedCollator
with the specified collation rules. Note that an application normally obtains an instance ofRuleBasedCollator
by calling thegetInstance
method ofCollator
. That method automatically loads the proper set of rules for the desired locale.
- Parameters:
rules
- The collation rule string.
- Throws:
ParseException
- If the rule string contains syntax errors.
public Object clone()
This method creates a copy of this object.
- Returns:
- A copy of this object.
public int compare(String source, String target)
This method returns an integer which indicates whether the first specifiedString
is less than, greater than, or equal to the second. The value depends not only on the collation rules in effect, but also the strength and decomposition settings of this object.
- Parameters:
source
- The firstString
to compare.target
- A secondString
to compare to the first.
- Returns:
- A negative integer if source < target, a positive integer if source > target, or 0 if source == target.
public boolean equals(Object obj)
This method tests this object for equality against the specified object. This will be true if and only if the specified object is another reference to this object.
- Specified by:
- equals in interface Comparator<T>
- Parameters:
obj
- TheObject
to compare against this object.
- Returns:
true
if the specified object is equal to this object,false
otherwise.
public CollationElementIterator getCollationElementIterator(String source)
This method returns an instance forCollationElementIterator
for the specifiedString
under the collation rules for this object.
- Parameters:
source
- TheString
to return theCollationElementIterator
instance for.
- Returns:
- A
CollationElementIterator
for the specifiedString
.
public CollationElementIterator getCollationElementIterator(CharacterIterator source)
This method returns an instance ofCollationElementIterator
for theString
represented by the specifiedCharacterIterator
.
- Parameters:
source
- TheCharacterIterator
with the desiredString
.
- Returns:
- A
CollationElementIterator
for the specifiedString
.
public CollationKey getCollationKey(String source)
This method returns an instance ofCollationKey
for the specifiedString
. The object returned will have a more efficient mechanism for its comparison function that could provide speed benefits if multiple comparisons are performed, such as during a sort.
- Overrides:
- getCollationKey in interface Collator
- Parameters:
source
- TheString
to create aCollationKey
for.
- Returns:
- A
CollationKey
for the specifiedString
.
public String getRules()
This method returns aString
containing the collation rules for this object.
- Returns:
- The collation rules for this object.
public int hashCode()
This method returns a hash value for this object.
- Returns:
- A hash value for this object.