| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
 | 
 | 
/*  | 
 | 
 * (C) Copyright Taligent, Inc. 1996 - All Rights Reserved  | 
 | 
 * (C) Copyright IBM Corp. 1996 - All Rights Reserved  | 
 | 
 *  | 
 | 
 *   The original version of this source code and documentation is copyrighted  | 
 | 
 * and owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These  | 
 | 
 * materials are provided under terms of a License Agreement between Taligent  | 
 | 
 * and Sun. This technology is protected by multiple US and International  | 
 | 
 * patents. This notice and attribution to Taligent may not be removed.  | 
 | 
 *   Taligent is a registered trademark of Taligent, Inc.  | 
 | 
 *  | 
 | 
 */  | 
 | 
 | 
 | 
package java.text;  | 
 | 
 | 
 | 
/**  | 
 | 
 * A <code>CollationKey</code> represents a <code>String</code> under the  | 
 | 
 * rules of a specific <code>Collator</code> object. Comparing two  | 
 | 
 * <code>CollationKey</code>s returns the relative order of the  | 
 | 
 * <code>String</code>s they represent. Using <code>CollationKey</code>s  | 
 | 
 * to compare <code>String</code>s is generally faster than using  | 
 | 
 * <code>Collator.compare</code>. Thus, when the <code>String</code>s  | 
 | 
 * must be compared multiple times, for example when sorting a list  | 
 | 
 * of <code>String</code>s. It's more efficient to use <code>CollationKey</code>s.  | 
 | 
 *  | 
 | 
 * <p>  | 
 | 
 * You can not create <code>CollationKey</code>s directly. Rather,  | 
 | 
 * generate them by calling <code>Collator.getCollationKey</code>.  | 
 | 
 * You can only compare <code>CollationKey</code>s generated from  | 
 | 
 * the same <code>Collator</code> object.  | 
 | 
 *  | 
 | 
 * <p>  | 
 | 
 * Generating a <code>CollationKey</code> for a <code>String</code>  | 
 | 
 * involves examining the entire <code>String</code>  | 
 | 
 * and converting it to series of bits that can be compared bitwise. This  | 
 | 
 * allows fast comparisons once the keys are generated. The cost of generating  | 
 | 
 * keys is recouped in faster comparisons when <code>String</code>s need  | 
 | 
 * to be compared many times. On the other hand, the result of a comparison  | 
 | 
 * is often determined by the first couple of characters of each <code>String</code>.  | 
 | 
 * <code>Collator.compare</code> examines only as many characters as it needs which  | 
 | 
 * allows it to be faster when doing single comparisons.  | 
 | 
 * <p>  | 
 | 
 * The following example shows how <code>CollationKey</code>s might be used  | 
 | 
 * to sort a list of <code>String</code>s.  | 
 | 
 * <blockquote>  | 
 | 
 * <pre>{@code | 
 | 
 * // 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());  | 
 | 
 * }</pre>  | 
 | 
 * </blockquote>  | 
 | 
 *  | 
 | 
 * @see          Collator  | 
 | 
 * @see          RuleBasedCollator  | 
 | 
 * @author       Helena Shih  | 
 | 
 */  | 
 | 
 | 
 | 
public abstract class CollationKey implements Comparable<CollationKey> { | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    abstract public int compareTo(CollationKey target);  | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    public String getSourceString() { | 
 | 
        return source;  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    abstract public byte[] toByteArray();  | 
 | 
 | 
 | 
 | 
 | 
    | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
   */  | 
 | 
    protected CollationKey(String source) { | 
 | 
        if (source==null){ | 
 | 
            throw new NullPointerException();  | 
 | 
        }  | 
 | 
        this.source = source;  | 
 | 
    }  | 
 | 
 | 
 | 
    final private String source;  | 
 | 
}  |