- 所有已实现的接口:
-
Cloneable
,Comparator<Object>
- 直接已知子类:
-
RuleBasedCollator
Collator
类执行区域敏感的String
比较。您可以使用此类构建自然语言文本的搜索和排序例程。
Collator
是一个抽象基类。子类实现特定的排序策略。一个子类RuleBasedCollator
目前已经提供在Java平台上,并适用于广泛的语言。其他子类可以被创建来处理更专业化的需求。
像其他区域敏感的类一样,您可以使用静态工厂方法getInstance
来获取给定区域设置的适当Collator
对象。只有在需要了解特定排序策略的细节或需要修改该策略时,您才需要查看Collator
的子类。
以下示例显示了如何使用默认区域设置的Collator
比较两个字符串。
// 在默认区域设置中比较两个字符串
Collator myCollator = Collator.getInstance();
if (myCollator.compare("abc", "ABC") < 0) {
System.out.println("abc小于ABC");
} else {
System.out.println("abc大于或等于ABC");
}
您可以设置Collator
的strength属性来确定在比较中被视为显著差异的级别。提供了四种强度: PRIMARY
, SECONDARY
, TERTIARY
, 和 IDENTICAL
。强度与语言特性的确切分配是与区域设置相关的。例如,在捷克语中,"e" 和 "f" 被视为主要差异,而 "e" 和 "ě" 被视为次要差异,"e" 和 "E" 被视为三级差异,"e" 和 "e" 被视为相同。以下示例显示了如何忽略大小写和重音符号对美国英语进行比较。
// 获取美国英语的Collator并将其强度设置为PRIMARY
Collator usCollator = Collator.getInstance(Locale.US);
usCollator.setStrength(Collator.PRIMARY);
if (usCollator.compare("abc", "ABC") == 0) {
System.out.println("字符串相等");
}
对于仅需一次精确比较String
的情况,compare
方法提供了最佳性能。然而,在对一组String
进行排序时,通常需要多次比较每个String
。在这种情况下,CollationKey
提供了更好的性能。CollationKey
类将String
转换为一系列可以按位与其他CollationKey
进行比较的位。CollationKey
是由给定String
的Collator
对象创建的。
- API 注意:
-
不同
Collator
的CollationKey
不能进行比较。请参阅CollationKey
类的类描述以查看使用CollationKey
的示例。 - 自 JDK 版本:
- 1.1
- 另请参见:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
分解模式值。static final int
分解模式值。static final int
Collator强度值。static final int
分解模式值。static final int
Collator强度值。static final int
Collator强度值。static final int
Collator强度值。 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionclone()
覆盖了Cloneableint
比较其两个参数的顺序。abstract int
根据此Collator的排序规则,比较源字符串和目标字符串。boolean
比较两个Collators的相等性。boolean
基于此Collator的排序规则,比较两个字符串的相等性的便利方法。static Locale[]
返回此类的所有实例的getInstance
方法可以返回本地化实例的所有区域设置的数组。abstract CollationKey
getCollationKey
(String source) 将字符串转换为一系列可以按位与其他CollationKeys进行比较的位。int
获取此Collator的分解模式。static Collator
获取当前默认区域设置的Collator。static Collator
getInstance
(Locale desiredLocale) 获取所需区域设置的Collator。int
返回此Collator的强度属性。abstract int
hashCode()
为此Collator生成哈希码。void
setDecomposition
(int decompositionMode) 设置此Collator的分解模式。void
setStrength
(int newStrength) 设置此Collator的强度属性。Methods declared in class java.lang.Object
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface java.util.Comparator
reversed, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
-
Field Details
-
PRIMARY
public static final int PRIMARYCollator强度值。设置后,仅PRIMARY差异在比较中被视为显著。强度与语言特性的分配是与区域设置相关的。一个常见的例子是将不同的基本字母("a" vs "b")视为PRIMARY差异。- 另请参见:
-
SECONDARY
public static final int SECONDARYCollator强度值。设置后,仅SECONDARY及以上差异在比较中被视为显著。强度与语言特性的分配是与区域设置相关的。一个常见的例子是将同一基本字母的不同重音形式("a" vs "ä")视为SECONDARY差异。- 另请参见:
-
TERTIARY
public static final int TERTIARYCollator强度值。设置后,仅TERTIARY及以上差异在比较中被视为显著。强度与语言特性的分配是与区域设置相关的。一个常见的例子是将大小写差异("a" vs "A")视为TERTIARY差异。- 另请参见:
-
IDENTICAL
public static final int IDENTICALCollator强度值。设置后,所有差异在比较中被视为显著。强度与语言特性的分配是与区域设置相关的。一个常见的例子是控制字符("\u0001" vs "\u0002")在PRIMARY、SECONDARY和TERTIARY级别被视为相同,但在IDENTICAL级别被视为不同。此外,如果分解设置为NO_DECOMPOSITION,则预组合重音符号之间的差异(如"\u00C0"(A-grave)和组合重音符号之间的差异(如"A\u0300"(A,组合-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对应于Unicode标准附录#15:Unicode规范化形式中描述的规范化形式KD。
- 外部规范
- 参见:
-
-
Constructor Details
-
Collator
protected Collator()默认构造函数。此构造函数受保护,以便子类可以访问它。通常,用户通过调用工厂方法getInstance来创建Collator子类。- 参见:
-
-
Method Details
-
getInstance
获取当前默认区域设置的Collator。默认区域设置由Locale.getDefault()
确定。- 返回:
- 默认区域设置的Collator。(例如,en_US)
- 参见:
-
getInstance
获取所需区域设置的Collator。如果所需区域设置具有"ks
"和/或"kk
" Unicode排序设置,此方法将在创建的实例上调用setStrength(int)
和/或setDecomposition(int)
,如果指定的Unicode排序设置基于以下映射被识别:强度(ks)的BCP 47值 强度的Collator常量 level1 PRIMARY level2 SECONDARY level3 TERTIARY* identic IDENTICAL 规范化(kk)的BCP 47值 分解的Collator常量 true CANONICAL_DECOMPOSITION false NO_DECOMPOSITION* - API注释:
-
Collator类的实现可能基于
desiredLocale
中的"co
" Unicode排序标识符生成不同的实例。例如:Collator.getInstance(Locale.forLanguageTag("sv-u-co-trad"));
- 参数:
-
desiredLocale
- 所需的区域设置。 - 返回:
- 所需区域设置的Collator。
- 外部规范
- 参见:
-
compare
根据此Collator的排序规则将源字符串与目标字符串进行比较。根据源字符串是否小于、等于或大于目标字符串,返回小于零、等于零或大于零的整数。请参阅Collator类描述以了解使用示例。对于一次性比较,此方法具有最佳性能。如果给定的字符串将参与多次比较,则CollationKey.compareTo具有最佳性能。请参阅Collator类描述以了解使用CollationKeys的示例。
- 参数:
-
source
- 源字符串。 -
target
- 目标字符串。 - 返回:
- 返回一个整数值。如果源小于目标,则值小于零,如果源和目标相等,则值为零,如果源大于目标,则值大于零。
- 参见:
-
compare
按顺序比较其两个参数。根据第一个参数是否小于、等于或大于第二个参数,返回负整数、零或正整数。此实现仅返回
compare((String)o1, (String)o2)
。- 指定者:
-
compare
在接口Comparator<Object>
- 参数:
-
o1
- 要比较的第一个对象。 -
o2
- 要比较的第二个对象。 - 返回:
- 负整数、零或正整数,表示第一个参数小于、等于或大于第二个参数。
- 抛出:
-
ClassCastException
- 参数无法转换为字符串。 - 自:
- 1.2
- 参见:
-
getCollationKey
将字符串转换为一系列可以按位比较的位。当涉及多次比较字符串时,CollationKeys提供比Collator.compare更好的性能。请参阅Collator类描述以了解使用CollationKeys的示例。- 参数:
-
source
- 要转换为排序键的字符串。 - 返回:
- 基于此Collator的排序规则的给定字符串的CollationKey。如果源字符串为null,则返回null CollationKey。
- 参见:
-
equals
根据此Collator的排序规则,基于两个字符串的相等性进行比较的便利方法。- 参数:
-
source
- 要与之比较的源字符串。 -
target
- 要与之比较的目标字符串。 - 返回:
- 如果根据排序规则字符串相等,则返回true。否则返回false。
- 参见:
-
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
返回所有支持此类的getInstance
方法返回本地化实例的所有区域设置的数组。返回的数组表示Java运行时和已安装的CollatorProvider
实现支持的区域设置的并集。返回的数组至少必须包含一个等于Locale.ROOT
和一个等于Locale.US
的Locale
实例。- 返回:
-
可用于本地化
Collator
实例的区域设置数组。
-
clone
覆盖了Cloneable -
equals
比较两个Collators的相等性。- 指定者:
-
equals
在接口Comparator<Object>
- 覆盖:
-
equals
在类Object
- 参数:
-
that
- 要与此进行比较的Collator。 - 返回:
- 如果此Collator与该Collator相同,则返回true;否则返回false。
- 参见:
-
hashCode
public abstract int hashCode()为此Collator生成哈希码。
-