public abstract class Collator
extends Object
implements Comparator<Object>, Cloneable
java.lang.Object | |
↳ | java.text.Collator |
Known Direct Subclasses |
Collator
类执行区域设置敏感的String
比较。 您可以使用此类为自然语言文本构建搜索和排序例程。
Collator
是一个抽象基类。 子类实现特定的整理策略。 一个子类RuleBasedCollator
目前与Java平台一起提供,适用于多种语言。 其他的子类可以被创建来处理更多的专业需求。
像其他语言环境敏感类一样,您可以使用静态工厂方法getInstance
来获取给定语言环境的相应Collator
对象。 如果您需要了解特定归类策略的详细信息或需要修改该策略,则只需查看Collator
的子类。
以下示例显示如何比较使用 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
的强度属性以确定比较中认为有意义的差异水平。 提供四个优势: PRIMARY
, SECONDARY
, TERTIARY
,并IDENTICAL
。 语言功能的确切分配与语言环境有关。 例如,在捷克语中,“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
。 在这种情况下, CollationKey
提供更好的性能。 所述CollationKey
类转换String
到一系列可以按位与其他进行比较的比特CollationKey
秒。 甲CollationKey
由创建Collator
对象对于给定的String
。
注: CollationKey
从不同来源Collator
s不能比拟的。 有关使用CollationKey
的示例,请参阅CollationKey
的类描述。
Constants |
|
---|---|
int |
CANONICAL_DECOMPOSITION 分解模式值。 |
int |
FULL_DECOMPOSITION 分解模式值。 |
int |
IDENTICAL Collator强度值。 |
int |
NO_DECOMPOSITION 分解模式值。 |
int |
PRIMARY Collator强度值。 |
int |
SECONDARY Collator强度值。 |
int |
TERTIARY Collator强度值。 |
Protected constructors |
|
---|---|
Collator() 默认的构造函数。 |
Public methods |
|
---|---|
Object |
clone() 返回一个具有与此collator相同分解模式和强度值的新整理器。 |
int |
compare(Object o1, Object o2) 比较它的两个命令。 |
abstract int |
compare(String source, String target) 根据此Collator的归类规则将源字符串与目标字符串进行比较。 |
boolean |
equals(String source, String target) 基于此Collator排序规则比较两个字符串相等的便捷方法。 |
boolean |
equals(Object that) 比较两名校友的平等。 |
static Locale[] |
getAvailableLocales() 返回 |
abstract CollationKey |
getCollationKey(String source) 将字符串转换为一系列可以按位与其他CollationKeys进行比较的位。 |
int |
getDecomposition() 获取此Collator的分解模式。 |
static Collator |
getInstance() 获取当前默认语言环境的Collator。 |
static Collator |
getInstance(Locale desiredLocale) 获取所需语言环境的Collator。 |
int |
getStrength() 返回此Collator的强度属性。 |
abstract int |
hashCode() 为此Collator生成哈希码。 |
void |
setDecomposition(int decompositionMode) 设置此Collator的分解模式。 |
void |
setStrength(int newStrength) 设置此Collator的强度属性。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.util.Comparator
|
int CANONICAL_DECOMPOSITION
分解模式值。 通过设置CANONICAL_DECOMPOSITION,根据Unicode标准的规范变体字符将被分解以进行归类。 这应该用于获得重音字符的正确排序。
CANONICAL_DECOMPOSITION对应于标准化表格D,如 Unicode Technical Report #15中所述 。
常数值:1(0x00000001)
int FULL_DECOMPOSITION
分解模式值。 通过设置FULL_DECOMPOSITION,Unicode规范变体和Unicode兼容性变体将被分解以进行归类。 这不仅导致重音字符被整理,而且还导致具有特殊格式的字符与它们的规范形式进行整理。 例如,半宽和全角ASCII和片假名字符会整理在一起。 FULL_DECOMPOSITION是最完整的,因此也是最慢的分解模式。
FULL_DECOMPOSITION对应于 Unicode Technical Report #15中描述的规范化表单KD。
常量值:2(0x00000002)
int IDENTICAL
Collator强度值。 设置时,比较过程中所有差异均被视为显着。 语言特征的优势分配是依赖于语言环境的。 控制字符(“\ u0001”与“\ u0002”)在PRIMARY,SECONDARY和TERTIARY级别被认为是相同的,但在IDENTICAL级别不同。 另外,如果将分解设置为NO_DECOMPOSITION,则在诸如“\ u00C0”(A-grave)的预先组合的口音和诸如“A \ u0300”(A,组合 - 坟墓)的组合口音之间的差异将被认为是显着的。
常量值:3(0x00000003)
int NO_DECOMPOSITION
分解模式值。 使用NO_DECOMPOSITION设置时,重音字符将不会被分解以进行整理。 这是默认设置,可提供最快的排序规则,但只会为不使用重音的语言生成正确的结果。
常量值:0(0x00000000)
int PRIMARY
Collator强度值。 设置时,比较期间只有主要差异被认为是显着的。 语言特征的优势分配是依赖于语言环境的。 一个常见的例子是不同的基本字母(“a”与“b”)被认为是主要区别。
也可以看看:
常量值:0(0x00000000)
int SECONDARY
Collator强度值。 设置时,比较中只有SECONDARY和以上的差异被认为是显着的。 语言特征的优势分配是依赖于语言环境的。 一个常见的例子是同一个基本字母(“a”和“Ô)的不同重音形式被认为是SECONDARY的区别。
也可以看看:
常数值:1(0x00000001)
int TERTIARY
Collator强度值。 设置时,比较过程中只有第三位和以上的差异被认为是显着的。 语言特征的优势分配是依赖于语言环境的。 一个常见的例子是案例差异(“a”与“A”)被视为第三种差异。
也可以看看:
常量值:2(0x00000002)
Collator ()
默认的构造函数。 这个构造函数是受保护的,所以子类可以访问它。 用户通常通过调用工厂方法getInstance来创建Collator子类。
也可以看看:
Object clone ()
返回一个具有与此collator相同分解模式和强度值的新整理器。
Returns | |
---|---|
Object |
a shallow copy of this collator. |
也可以看看:
int compare (Object o1, Object o2)
比较它的两个命令。 由于第一个参数小于,等于或大于第二个参数,因此返回负整数,零或正整数。
该实现仅返回 compare((String)o1, (String)o2)
。
Parameters | |
---|---|
o1 |
Object
|
o2 |
Object
|
Returns | |
---|---|
int |
a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second. |
Throws | |
---|---|
ClassCastException |
the arguments cannot be cast to Strings. |
也可以看看:
int compare (String source, String target)
根据此Collator的归类规则将源字符串与目标字符串进行比较。 根据源字符串是否小于,等于或大于目标字符串,返回小于,等于或大于零的整数。 有关使用示例,请参阅Collator类描述。
对于一次比较,此方法具有最佳性能。 如果给定的字符串将参与多重比较,则CollationKey.compareTo具有最佳性能。 有关使用CollationKeys的示例,请参阅Collator类描述。
Parameters | |
---|---|
source |
String : the source string. |
target |
String : the target string. |
Returns | |
---|---|
int |
Returns an integer value. Value is less than zero if source is less than target, value is zero if source and target are equal, value is greater than zero if source is greater than target. |
boolean equals (String source, String target)
基于此Collator排序规则比较两个字符串相等的便捷方法。
Parameters | |
---|---|
source |
String : the source string to be compared with. |
target |
String : the target string to be compared with. |
Returns | |
---|---|
boolean |
true if the strings are equal according to the collation rules. false, otherwise. |
也可以看看:
boolean equals (Object that)
比较两名校友的平等。
Parameters | |
---|---|
that |
Object : the Collator to be compared with this. |
Returns | |
---|---|
boolean |
true if this Collator is the same as that Collator; false otherwise. |
Locale[] getAvailableLocales ()
返回getInstance
方法可返回本地化实例的所有语言环境的数组。 返回的数组表示Java运行时支持的语言环境联合以及安装的CollatorProvider
实现。 它必须包含至少一个等于Locale.US
的Locale实例。
Returns | |
---|---|
Locale[] |
An array of locales for which localized Collator instances are available. |
CollationKey getCollationKey (String source)
将字符串转换为一系列可以按位与其他CollationKeys进行比较的位。 当字符串参与多重比较时,CollationKeys比Collator.compare提供更好的性能。 有关使用CollationKeys的示例,请参阅Collator类描述。
Parameters | |
---|---|
source |
String : the string to be transformed into a collation key. |
Returns | |
---|---|
CollationKey |
the CollationKey for the given String based on this Collator's collation rules. If the source String is null, a null CollationKey is returned. |
也可以看看:
int getDecomposition ()
获取此Collator的分解模式。 分解模式决定如何处理Unicode组成字符。 调整分解模式允许用户选择更快和更完整的整理行为。
分解模式的三个值是:
Returns | |
---|---|
int |
the decomposition mode |
Collator getInstance ()
获取当前默认语言环境的Collator。 缺省语言环境由java.util.Locale.getDefault确定。
Returns | |
---|---|
Collator |
the Collator for the default locale.(for example, en_US) |
也可以看看:
Collator getInstance (Locale desiredLocale)
获取所需语言环境的Collator。
Parameters | |
---|---|
desiredLocale |
Locale : the desired locale. |
Returns | |
---|---|
Collator |
the Collator for the desired locale. |
也可以看看:
int getStrength ()
返回此Collator的强度属性。 强度属性决定了比较过程中认为有意义的最小差异水平。 有关使用示例,请参阅Collator类描述。
Returns | |
---|---|
int |
this Collator's current strength property. |
int hashCode ()
为此Collator生成哈希码。
Returns | |
---|---|
int |
a hash code value for this object. |
void setDecomposition (int decompositionMode)
设置此Collator的分解模式。 有关分解模式的描述,请参阅getDecomposition。
Parameters | |
---|---|
decompositionMode |
int : the new decomposition mode. |
Throws | |
---|---|
IllegalArgumentException |
If the given value is not a valid decomposition mode. |
void setStrength (int newStrength)
设置此Collator的强度属性。 强度属性决定了比较过程中认为有意义的最小差异水平。 有关使用示例,请参阅Collator类描述。
Parameters | |
---|---|
newStrength |
int : the new strength value. |
Throws | |
---|---|
IllegalArgumentException |
If the new strength value is not one of PRIMARY, SECONDARY, TERTIARY or IDENTICAL. |