- 所有已实现的接口:
Cloneable,Comparator<Object>
- 已知子类:
RuleBasedCollator
Collator 类执行locale敏感的 String 比较。您可以使用此类为自然语言文本构建搜索和排序例程。
Collator 是一个抽象基类。子类实现特定的整理策略。一个子类 RuleBasedCollator 目前随 Java 平台一起提供,适用于多种语言。可以创建其他子类来处理更专业的需求。
与其他locale敏感的类一样,您可以使用静态工厂方法 getInstance 为给定的locale获取适当的 Collator 对象。如果您需要了解特定归类策略的详细信息或需要修改该策略,则只需查看 Collator 的子类。
以下示例显示如何使用默认locale的 Collator 比较两个字符串。
// 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");
您可以设置 Collator 的 strength 属性以确定在比较中被认为具有显着性的差异水平。提供了四种强度:PRIMARY、SECONDARY、TERTIARY 和 IDENTICAL。语言特征强度的确切分配取决于locale。例如,在捷克语中,“e”和“f”被认为是初级差异,而“e”和“ě”是次级差异,“e”和“E”是三级差异,“e”和“e”是相同的.下面显示了如何为美国英语忽略大小写和重音。
//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");
}
对于只比较 String 一次,compare 方法提供最佳性能。但是,在对 String 列表进行排序时,通常需要多次比较每个 String 。在这种情况下,CollationKeys 提供更好的性能。 CollationKey 类将 String 转换为一系列可以与其他 CollationKey 进行按位比较的位。 CollationKey 由 Collator 对象为给定的 String 创建。
Note: CollationKey 来自不同的 Collator 无法进行比较。有关使用 CollationKey s 的示例,请参阅 CollationKey 的类描述。
- 自从:
- 1.1
- 参见:
-
字段摘要
字段修饰符和类型Field描述static final int分解模式值。static final int分解模式值。static final int收集器强度值。static final int分解模式值。static final int收集器强度值。static final int收集器强度值。static final int收集器强度值。 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述clone()重写可克隆int比较其两个参数的顺序。abstract int根据此整理器的整理规则将源字符串与目标字符串进行比较。boolean比较两个 Collator 的相等性。boolean基于此 Collator 的排序规则比较两个字符串是否相等的便捷方法。static Locale[]返回一个包含所有locale的数组,此类的getInstance方法可以为其返回本地化实例。abstract CollationKeygetCollationKey(String source) 将 String 转换为可以与其他 CollationKey 按位进行比较的一系列位。int获取此 Collator 的分解模式。static Collator获取当前默认locale的 Collator。static CollatorgetInstance(Locale desiredLocale) 获取所需locale的 Collator。int返回此 Collator 的强度属性。abstract inthashCode()为此 Collator 生成哈希码。voidsetDecomposition(int decompositionMode) 设置此 Collator 的分解模式。voidsetStrength(int newStrength) 设置此 Collator 的强度属性。在接口 java.util.Comparator 中声明的方法
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
字段详细信息
-
PRIMARY
public static final int PRIMARY收集器强度值。设置后,在比较过程中只有主要差异被认为是重要的。语言特征的强度分配取决于locale。一个常见的示例是将不同的基本字母(“a”与“b”)视为主要区别。- 参见:
-
SECONDARY
public static final int SECONDARY收集器强度值。设置后,在比较过程中只有 SECONDARY 和以上差异被认为是显着的。语言特征的强度分配取决于locale。一个常见的示例是相同基本字母的不同重音形式(“a”与“ä”)被视为次要差异。- 参见:
-
TERTIARY
public static final int TERTIARY收集器强度值。设置后,只有 TERTIARY 及以上差异在比较过程中被认为是重要的。语言特征的强度分配取决于locale。一个常见的示例是将大小写差异(“a”与“A”)视为第三差异。- 参见:
-
IDENTICAL
public static final int IDENTICAL收集器强度值。设置后,所有差异在比较过程中都被认为是重要的。语言特征的强度分配取决于locale。一个常见示例是控制字符(“\u0001”与“\u0002”)在 PRIMARY、SECONDARY 和 TERTIARY 级别被视为相等,但在 IDENTICAL 级别不同。此外,如果分解设置为 NO_DECOMPOSITION,预组合重音(如“\u00C0”(A-grave))和组合重音(如“A\u0300”(A,combining-grave))之间的差异将在 IDENTICAL 级别被视为显着.- 参见:
-
NO_DECOMPOSITION
public static final int NO_DECOMPOSITION分解模式值。设置 NO_DECOMPOSITION 后,重音字符将不会被分解以进行整理。这是默认设置并提供最快的归类,但只会为不使用重音符号的语言生成正确的结果。- 参见:
-
CANONICAL_DECOMPOSITION
public static final int CANONICAL_DECOMPOSITION分解模式值。设置 CANONICAL_DECOMPOSITION 后,根据 Unicode 标准属于规范变体的字符将被分解以进行整理。这应该用于获得重音字符的正确排序。CANONICAL_DECOMPOSITION 对应于 Unicode 标准附件 #15:Unicode 规范化形式 中描述的规范化形式 D。
- 参见:
-
FULL_DECOMPOSITION
public static final int FULL_DECOMPOSITION分解模式值。使用 FULL_DECOMPOSITION 设置,Unicode 规范变体和 Unicode 兼容性变体都将被分解以进行整理。这不仅会导致对重音字符进行整理,还会将具有特殊格式的字符与其正常形式进行整理。例如,然后将半角和全角 ASCII 和片假名字符整理在一起。 FULL_DECOMPOSITION 是最完整的分解模式,因此也是最慢的分解模式。FULL_DECOMPOSITION 对应于 Normalization Form KD,如 Unicode 标准附件 #15:Unicode 规范化形式 中所述。
- 参见:
-
-
构造方法详细信息
-
Collator
protected Collator()默认构造方法。此构造方法受到保护,因此子类可以访问它。用户通常通过调用工厂方法 getInstance 创建 Collator 子类。- 参见:
-
-
方法详情
-
getInstance
获取当前默认locale的 Collator。默认locale由 java.util.Locale.getDefault 确定。- 返回:
- 默认locale的 Collator。(例如,en_US)
- 参见:
-
getInstance
获取所需locale的 Collator。- 参数:
desiredLocale- 所需的locale。- 返回:
- 所需locale的 Collator。
- 参见:
-
compare
根据此整理器的整理规则将源字符串与目标字符串进行比较。根据源字符串是小于、等于还是大于目标字符串,返回小于、等于或大于零的整数。有关使用示例,请参阅 Collator 类描述。对于一次性比较,这种方法具有最好的性能。如果给定的 String 会涉及多次比较,CollationKey.compareTo 的性能最好。有关使用 CollationKeys 的示例,请参阅 Collator 类描述。
- 参数:
source- 源字符串。target- 目标字符串。- 返回:
- 返回一个整数值。如果源小于目标,则值小于零;如果源和目标相等,则值为零;如果源大于目标,则值大于零。
- 参见:
-
compare
比较其两个参数的顺序。当第一个参数小于、等于或大于第二个参数时,返回负整数、零或正整数。此实现仅返回
compare((String)o1, (String)o2)。- 指定者:
compare在接口Comparator<Object>中- 参数:
o1- 要比较的第一个对象。o2- 要比较的第二个对象。- 返回:
- 作为第一个参数小于、等于或大于第二个参数的负整数、零或正整数。
- 抛出:
ClassCastException- 参数无法转换为字符串。- 自从:
- 1.2
- 参见:
-
getCollationKey
将 String 转换为可以与其他 CollationKey 按位进行比较的一系列位。当 Strings 参与多重比较时,CollationKeys 提供比 Collator.compare 更好的性能。有关使用 CollationKeys 的示例,请参阅 Collator 类描述。- 参数:
source- 要转换为归类键的字符串。- 返回:
- 基于此 Collator 的整理规则的给定 String 的 CollationKey。如果源字符串为 null,则返回 null CollationKey。
- 参见:
-
equals
基于此 Collator 的排序规则比较两个字符串是否相等的便捷方法。- 参数:
source- 要与之比较的源字符串。target- 要与之比较的目标字符串。- 返回:
- 如果字符串根据归类规则相等,则为真。假的,否则。
- 参见:
-
getStrength
public int getStrength()返回此 Collator 的强度属性。强度属性决定了在比较过程中被认为是显着的最小差异水平。有关使用示例,请参阅 Collator 类描述。- 返回:
- 此 Collator 的当前强度属性。
- 参见:
-
setStrength
public void setStrength(int newStrength) 设置此 Collator 的强度属性。强度属性决定了在比较过程中被认为是显着的最小差异水平。有关使用示例,请参阅 Collator 类描述。- 参数:
newStrength- 新的强度值。- 抛出:
IllegalArgumentException- 如果新强度值不是 PRIMARY、SECONDARY、TERTIARY 或 IDENTICAL 之一。- 参见:
-
getDecomposition
public int getDecomposition()获取此 Collator 的分解模式。分解模式决定了如何处理 Unicode 组合字符。调整分解模式允许用户在更快和更完整的整理行为之间进行选择。分解模式的三个值是:
- NO_DECOMPOSITION,
- CANONICAL_DECOMPOSITION
- FULL_DECOMPOSITION.
- 返回:
- 分解模式
- 参见:
-
setDecomposition
public void setDecomposition(int decompositionMode) 设置此 Collator 的分解模式。有关分解模式的说明,请参阅 getDecomposition。- 参数:
decompositionMode- 新的分解模式。- 抛出:
IllegalArgumentException- 如果给定值不是有效的分解模式。- 参见:
-
getAvailableLocales
返回一个包含所有locale的数组,此类的getInstance方法可以为其返回本地化实例。返回的数组表示 Java 运行时和已安装的CollatorProvider实现支持的locale的联合。至少,返回的数组必须包含一个等于Locale.ROOT的Locale实例和一个等于Locale.US的Locale实例。- 返回:
-
本地化
Collator实例可用的locale数组。
-
clone
重写可克隆 -
equals
比较两个 Collator 的相等性。- 指定者:
equals在接口Comparator<Object>中- 重写:
equals在类Object中- 参数:
that- 要与之比较的 Collator。- 返回:
- 如果此 Collator 与那个 Collator 相同,则为 true;否则为假。
- 参见:
-
hashCode
public abstract int hashCode()为此 Collator 生成哈希码。
-