Class CollationKey
- java.lang.Object
-
- java.text.CollationKey
-
- All Implemented Interfaces:
Comparable<CollationKey>
- Direct Known Subclasses:
CollationKeyICU
public abstract class CollationKey extends Object implements Comparable<CollationKey>
Represents a string under the rules of a specificCollatorobject. Comparing twoCollationKeyinstances returns the relative order of the strings they represent.Since the rule set of collators can differ, the sort orders of the same string under two different
Collatorinstances might differ. Hence comparing collation keys generated from differentCollatorinstances can give incorrect results.Both the method
CollationKey.compareTo(CollationKey)and the methodCollator.compare(String, String)compares two strings and returns their relative order. The performance characteristics of these two approaches can differ.During the construction of a
CollationKey, the entire source string is examined and processed into a series of bits terminated by a null, that are stored in theCollationKey. WhenCollationKey.compareTo(CollationKey)executes, it performs bitwise comparison on the bit sequences. This can incur startup cost when creating theCollationKey, but once the key is created, binary comparisons are fast. This approach is recommended when the same strings are to be compared over and over again.On the other hand, implementations of
Collator.compare(String, String)can examine and process the strings only until the first characters differ in order. This approach is recommended if the strings are to be compared only once.The following example shows how collation keys can be used to sort a list of strings:
// Create an array of CollationKeys for the Strings to be sorted. Collator myCollator = Collator.getInstance(); CollationKey[] keys = new CollationKey[3]; keys[0] = myCollator.getCollationKey("Tom"); keys[1] = myCollator.getCollationKey("Dick"); keys[2] = myCollator.getCollationKey("Harry"); sort(keys);
//...
// Inside body of sort routine, compare keys this way if( keys[i].compareTo( keys[j] ) > 0 ) // swap keys[i] and keys[j]
//...
// Finally, when we've returned from sort. System.out.println(keys[0].getSourceString()); System.out.println(keys[1].getSourceString()); System.out.println(keys[2].getSourceString());- See Also:
Collator,RuleBasedCollator
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedCollationKey(String source)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract intcompareTo(CollationKey value)Compares this collation key to the given collation key.StringgetSourceString()Returns the string from which this collation key was created.abstract byte[]toByteArray()Returns this collation key as a byte array.
-
-
-
Constructor Detail
-
CollationKey
protected CollationKey(String source)
-
-
Method Detail
-
compareTo
public abstract int compareTo(CollationKey value)
Compares this collation key to the given collation key.- Specified by:
compareToin interfaceComparable<CollationKey>- Parameters:
value- the other collation key.- Returns:
- a negative value if this key is less than
value, 0 if they are equal, and a positive value if this key is greater.
-
getSourceString
public String getSourceString()
Returns the string from which this collation key was created.- Returns:
- the source string of this collation key.
-
toByteArray
public abstract byte[] toByteArray()
Returns this collation key as a byte array.- Returns:
- an array of bytes.
-
-