⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 collator.java

📁 java源代码 请看看啊 提点宝贵的意见
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)Collator.java	1.34 03/01/27 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * (C) Copyright Taligent, Inc. 1996-1998 -  All Rights Reserved * (C) Copyright IBM Corp. 1996-1998 - 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;import java.util.Locale;import java.util.MissingResourceException;import java.util.ResourceBundle;import sun.misc.SoftCache;import sun.text.resources.LocaleData;/** * The <code>Collator</code> class performs locale-sensitive * <code>String</code> comparison. You use this class to build * searching and sorting routines for natural language text. * * <p> * <code>Collator</code> is an abstract base class. Subclasses * implement specific collation strategies. One subclass, * <code>RuleBasedCollator</code>, is currently provided with * the Java 2 platform and is applicable to a wide set of languages. Other * subclasses may be created to handle more specialized needs. * * <p> * Like other locale-sensitive classes, you can use the static * factory method, <code>getInstance</code>, to obtain the appropriate * <code>Collator</code> object for a given locale. You will only need * to look at the subclasses of <code>Collator</code> if you need * to understand the details of a particular collation strategy or * if you need to modify that strategy. * * <p> * The following example shows how to compare two strings using * the <code>Collator</code> for the default locale. * <blockquote> * <pre> * // 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"); * </pre> * </blockquote> * * <p> * You can set a <code>Collator</code>'s <em>strength</em> property * to determine the level of difference considered significant in * comparisons. Four strengths are provided: <code>PRIMARY</code>, * <code>SECONDARY</code>, <code>TERTIARY</code>, and <code>IDENTICAL</code>. * 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 "\u00EA" 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. * <blockquote> * <pre> * //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"); * } * </pre> * </blockquote> * <p> * For comparing <code>String</code>s exactly once, the <code>compare</code> * method provides the best performance. When sorting a list of * <code>String</code>s however, it is generally necessary to compare each * <code>String</code> multiple times. In this case, <code>CollationKey</code>s * provide better performance. The <code>CollationKey</code> class converts * a <code>String</code> to a series of bits that can be compared bitwise * against other <code>CollationKey</code>s. A <code>CollationKey</code> is * created by a <code>Collator</code> object for a given <code>String</code>. * <br> * <strong>Note:</strong> <code>CollationKey</code>s from different * <code>Collator</code>s can not be compared. See the class description * for {@link CollationKey} * for an example using <code>CollationKey</code>s. * * @see         RuleBasedCollator * @see         CollationKey * @see         CollationElementIterator * @see         Locale * @version     1.34, 01/27/03 * @author      Helena Shih, Laura Werner, Richard Gillam */public abstract class Collator implements java.util.Comparator, Cloneable {    /**     * Collator strength value.  When set, only PRIMARY differences are     * considered significant during comparison. The assignment of strengths     * to language features is locale dependant. A common example is for     * different base letters ("a" vs "b") to be considered a PRIMARY difference.     * @see java.text.Collator#setStrength     * @see java.text.Collator#getStrength     */    public final static int PRIMARY = 0;    /**     * Collator strength value.  When set, only SECONDARY and above differences are     * considered significant during comparison. The assignment of strengths     * to language features is locale dependant. A common example is for     * different accented forms of the same base letter ("a" vs "\u00E4") to be     * considered a SECONDARY difference.     * @see java.text.Collator#setStrength     * @see java.text.Collator#getStrength     */    public final static int SECONDARY = 1;    /**     * Collator strength value.  When set, only TERTIARY and above differences are     * considered significant during comparison. The assignment of strengths     * to language features is locale dependant. A common example is for     * case differences ("a" vs "A") to be considered a TERTIARY difference.     * @see java.text.Collator#setStrength     * @see java.text.Collator#getStrength     */    public final static int TERTIARY = 2;    /**     * Collator strength value.  When set, all differences are     * considered significant during comparison. The assignment of strengths     * to language features is locale dependant. A common example is for control     * characters ("&#092;u0001" vs "&#092;u0002") to be considered equal at the     * PRIMARY, SECONDARY, and TERTIARY levels but different at the IDENTICAL     * level.  Additionally, differences between pre-composed accents such as     * "&#092;u00C0" (A-grave) and combining accents such as "A&#092;u0300"     * (A, combining-grave) will be considered significant at the tertiary     * level if decomposition is set to NO_DECOMPOSITION.     */    public final static int IDENTICAL = 3;    /**     * Decomposition mode value. With NO_DECOMPOSITION     * set, accented characters will not be decomposed for collation. This     * is the default setting and provides the fastest collation but      * will only produce correct results for languages that do not use accents.     * @see java.text.Collator#getDecomposition     * @see java.text.Collator#setDecomposition     */    public final static int NO_DECOMPOSITION = 0;    /**     * Decomposition mode value. With CANONICAL_DECOMPOSITION     * set, characters that are canonical variants according to Unicode 2.0     * will be decomposed for collation. This      * should be used to get correct collation of accented characters.     * <p>     * CANONICAL_DECOMPOSITION corresponds to Normalization Form D as     * described in      * <a href="http://www.unicode.org/unicode/reports/tr15/">Unicode      * Technical Report #15</a>.     * @see java.text.Collator#getDecomposition     * @see java.text.Collator#setDecomposition     */    public final static int CANONICAL_DECOMPOSITION = 1;    /**     * Decomposition mode value. With FULL_DECOMPOSITION     * set, both Unicode canonical variants and Unicode compatibility variants     * will be decomposed for collation.  This causes not only accented     * characters to be collated, but also characters that have special formats     * to be collated with their norminal form. For example, the half-width and     * full-width ASCII and Katakana characters are then collated together.     * FULL_DECOMPOSITION is the most complete and therefore the slowest     * decomposition mode.     * <p>     * FULL_DECOMPOSITION corresponds to Normalization Form KD as     * described in      * <a href="http://www.unicode.org/unicode/reports/tr15/">Unicode      * Technical Report #15</a>.     * @see java.text.Collator#getDecomposition     * @see java.text.Collator#setDecomposition     */    public final static int FULL_DECOMPOSITION = 2;    /**     * Gets the Collator for the current default locale.     * The default locale is determined by java.util.Locale.getDefault.     * @return the Collator for the default locale.(for example, en_US)     * @see java.util.Locale#getDefault     */    public static synchronized Collator getInstance() {        return getInstance(Locale.getDefault());    }    /**     * Gets the Collator for the desired locale.     * @param desiredLocale the desired locale.     * @return the Collator for the desired locale.     * @see java.util.Locale     * @see java.util.ResourceBundle     */    public static synchronized    Collator getInstance(Locale desiredLocale)    {        RuleBasedCollator result = null;        result = (RuleBasedCollator) cache.get(desiredLocale);        if (result != null) {                 return (Collator)result.clone();  // make the world safe        }        // Load the resource of the desired locale from resource        // manager.        String colString = "";        int decomp = CANONICAL_DECOMPOSITION;                try {            ResourceBundle resource = LocaleData.getLocaleElements(desiredLocale);            colString = resource.getString("CollationElements");            decomp = ((Integer)resource.getObject("CollationDecomp")).intValue();        } catch (MissingResourceException e) {            // Use default values        }        try        {            result = new RuleBasedCollator( CollationRules.DEFAULTRULES +                                            colString,                                            decomp );        }        catch(ParseException foo)        {            // predefined tables should contain correct grammar

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -