public abstract class Collator
extends Object
implements Comparator<Object>, Freezable<Collator>, Cloneable
java.lang.Object | |
↳ | android.icu.text.Collator |
Known Direct Subclasses |
[ICU增强] ICU的替代Collator
。 ICU特有的方法,字段和其他功能标记为“ [icu] ”。
Collator执行区域设置敏感的字符串比较。 具体的子类RuleBasedCollator允许通过使用规则集来自定义排序规则排序。
Collator只有在冻结时才是线程安全的。 见isFrozen()
和Freezable
。
继 Unicode Consortium的规格为 Unicode Collation Algorithm (UCA) ,有5个不同层次的比较中使用的力量:
有关整理服务的更多信息,请参阅 User Guide 。
使用示例
// 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"); } The following example shows how to compare two strings using the Collator for the default locale. // Compare two strings in the default locale Collator myCollator = Collator.getInstance(); myCollator.setDecomposition(NO_DECOMPOSITION); if (myCollator.compare("à\u0325", "a\u0325̀") != 0) { System.out.println("à\u0325 is not equals to a\u0325̀ without decomposition"); myCollator.setDecomposition(CANONICAL_DECOMPOSITION); if (myCollator.compare("à\u0325", "a\u0325̀") != 0) { System.out.println("Error: à\u0325 should be equals to a\u0325̀ with decomposition"); } else { System.out.println("à\u0325 is equals to a\u0325̀ with decomposition"); } } else { System.out.println("Error: à\u0325 should be not equals to a\u0325̀ without decomposition"); }
也可以看看:
Nested classes |
|
---|---|
interface |
Collator.ReorderCodes 重新排序可在排序规则下重新排序的非脚本组的代码。 |
Constants |
|
---|---|
int |
CANONICAL_DECOMPOSITION 分解模式值。 |
int |
FULL_DECOMPOSITION [icu]注意:这仅用于与Java API的向后兼容。 |
int |
IDENTICAL 最小的Collator强度值。 |
int |
NO_DECOMPOSITION 分解模式值。 |
int |
PRIMARY 最强的拼版强度值。 |
int |
QUATERNARY [icu]第四级整理者强度值。 |
int |
SECONDARY 二级整理强度值。 |
int |
TERTIARY 第三级整理强度值。 |
Protected constructors |
|
---|---|
Collator() 空默认构造函数使javadocs高兴 |
Public methods |
|
---|---|
Object |
clone() 克隆整理器。 |
Collator |
cloneAsThawed() 提供克隆操作。 |
int |
compare(Object source, Object target) 将源对象与目标对象进行比较。 |
abstract int |
compare(String source, String target) 根据此Collator的规则,强度和分解模式将源文本字符串与目标文本字符串进行比较。 |
boolean |
equals(String source, String target) 使用此Collator的规则,强度和分解模式比较两个文本字符串的相等性。 |
boolean |
equals(Object obj) 比较两个Collator对象的相等性。 |
Collator |
freeze() 冻结整理者。 |
static Locale[] |
getAvailableLocales() 返回安装了collators的语言环境集合,作为Locale对象。 |
static final ULocale[] |
getAvailableULocales() [icu]返回安装了collators的语言环境集合,如ULocale对象。 |
abstract CollationKey |
getCollationKey(String source) 将字符串转换为适用于高效重复比较的整理键。 |
int |
getDecomposition() 返回此Collator的分解模式。 |
static String |
getDisplayName(Locale objectLocale, Locale displayLocale) [icu]返回objectLocale的collator的名称,已针对displayLocale进行了本地化。 |
static String |
getDisplayName(ULocale objectLocale) [icu]返回objectLocale的collator的名称,本地化为默认的 |
static String |
getDisplayName(ULocale objectLocale, ULocale displayLocale) [icu]返回objectLocale的collator的名称,已针对displayLocale进行了本地化。 |
static String |
getDisplayName(Locale objectLocale) [icu]返回objectLocale的collator的名称,本地化为默认的 |
static int[] |
getEquivalentReorderCodes(int reorderCode) 检索与给定的重新订购代码分组的所有重新订购代码。 |
static final ULocale |
getFunctionalEquivalent(String keyword, ULocale locID) [icu]针对整理服务,针对给定的请求语言环境返回相对于给定关键字的功能上等效的语言环境。 |
static final ULocale |
getFunctionalEquivalent(String keyword, ULocale locID, boolean[] isAvailable) [icu]针对整理服务,针对给定的请求语言环境返回相对于给定关键字的功能上等效的语言环境。 |
static final Collator |
getInstance() 返回当前默认语言环境的Collator。 |
static final Collator |
getInstance(Locale locale) 返回所需语言环境的Collator。 |
static final Collator |
getInstance(ULocale locale) [icu]返回所需语言环境的Collator。 |
static final String[] |
getKeywordValues(String keyword) [icu]给定关键字,返回当前正在使用的关键字的所有值的数组。 |
static final String[] |
getKeywordValuesForLocale(String key, ULocale locale, boolean commonlyUsed) [icu]给定一个键和一个语言环境,以一个首选顺序返回一个字符串值数组,它会产生变化。 |
static final String[] |
getKeywords() [icu]返回与整理相关的所有可能关键字的数组。 |
int |
getMaxVariable() [icu]返回字符受备用处理行为影响的最大重新排序组。 |
int[] |
getReorderCodes() 检索该整理器的重新排序代码。 |
int |
getStrength() 返回此Collator的强度属性。 |
UnicodeSet |
getTailoredSet() [icu]返回一个UnicodeSet,其中包含在该调整器中定制的所有字符和序列。 |
abstract VersionInfo |
getUCAVersion() [icu]返回此collator对象的UCA版本。 |
abstract int |
getVariableTop() [icu]获取Collator的变量top值。 |
abstract VersionInfo |
getVersion() [icu]返回此collator对象的版本。 |
boolean |
isFrozen() 确定对象是否被冻结。 |
void |
setDecomposition(int decomposition) 设置此Collator的分解模式。 |
Collator |
setMaxVariable(int group) [icu]将变量top设置为指定重排序组的顶部。 |
void |
setReorderCodes(int... order) 设置该整理器的重新排序代码。 |
void |
setStrength(int newStrength) 设置此Collator的强度属性。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface java.util.Comparator
|
|
From interface android.icu.util.Freezable
|
int CANONICAL_DECOMPOSITION
分解模式值。 通过设置CANONICAL_DECOMPOSITION,根据Unicode标准的规范变体字符将被分解以进行归类。
CANONICAL_DECOMPOSITION对应于 Unicode Technical Report #15中描述的标准化表格D.
常量值:17(0x00000011)
int FULL_DECOMPOSITION
[icu]注意:这仅用于与Java API的向后兼容。 它不应该使用,应该使用IDENTICAL。 ICU的排序规则不支持Java的FULL_DECOMPOSITION模式。
常量值:15(0x0000000f)
int IDENTICAL
最小的Collator强度值。 当所有其他优势相等时,IDENTICAL强度将被用作决胜球。 每个字符串的NFD格式的Unicode代码点值进行比较,以防万一没有差异。 有关更多说明,请参阅班级文档
请注意,此值与JDK的不同
常量值:15(0x0000000f)
int NO_DECOMPOSITION
分解模式值。 使用NO_DECOMPOSITION设置,字符串不会被分解以进行整理。 这是默认的分解设置,除非用于创建Collator的语言环境另有说明。
请注意,此值与JDK的不同。
常量值:16(0x00000010)
int PRIMARY
最强的拼版强度值。 通常用于表示基本字符之间的差异。 有关更多说明,请参阅班级文档
也可以看看:
常量值:0(0x00000000)
int QUATERNARY
[icu]第四级整理者强度值。 当标点符号被忽略(见Ignoring Punctuation in the User Guide )在PRIMARY到TERTIARY的强度时,可以使用额外的强度级别来区分有标点符号和没有标点符号的单词。 有关更多说明,请参阅班级文档
也可以看看:
常量值:3(0x00000003)
int SECONDARY
二级整理强度值。 字符中的重音被认为是次要的差异。 取决于语言,字母之间的其他差异也可以被认为是次要差异。 有关更多说明,请参阅班级文档
也可以看看:
常数值:1(0x00000001)
int TERTIARY
第三级整理强度值。 在这个强度水平上,字符的大写和小写字母差别是有区别的。 另外,一个字母的变体不同于第三级的基本形式。 有关更多说明,请参阅班级文档
也可以看看:
常量值:2(0x00000002)
Object clone ()
克隆整理器。
Returns | |
---|---|
Object |
a clone of this collator. |
Throws | |
---|---|
CloneNotSupportedException |
int compare (Object source, Object target)
将源对象与目标对象进行比较。
Parameters | |
---|---|
source |
Object : the source Object. |
target |
Object : the target Object. |
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. |
Throws | |
---|---|
ClassCastException |
thrown if either arguments cannot be cast to CharSequence. |
int compare (String source, String target)
根据此Collator的规则,强度和分解模式将源文本字符串与目标文本字符串进行比较。 根据源字符串是否小于,等于或大于目标字符串,返回小于,等于或大于零的整数。 有关使用示例,请参阅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. |
Throws | |
---|---|
NullPointerException |
thrown if either argument is null. |
boolean equals (String source, String target)
使用此Collator的规则,强度和分解模式比较两个文本字符串的相等性。 便利的方法。
Parameters | |
---|---|
source |
String : the source string to be compared. |
target |
String : the target string to be compared. |
Returns | |
---|---|
boolean |
true if the strings are equal according to the collation rules, otherwise false. |
Throws | |
---|---|
NullPointerException |
thrown if either arguments is null. |
也可以看看:
boolean equals (Object obj)
比较两个Collator对象的相等性。 如果Collator对象具有相同的排序(排序和搜索)行为,则它们是相等的。
基类检查null和相等类型。 子类应该重写。
Parameters | |
---|---|
obj |
Object : the Collator to compare to. |
Returns | |
---|---|
boolean |
true if this Collator has exactly the same collation behavior as obj, false otherwise. |
Locale[] getAvailableLocales ()
返回安装了collators的语言环境集合,作为Locale对象。 请注意,Locale对象不支持RFC 3066。
Returns | |
---|---|
Locale[] |
the list of locales in which collators are installed. This list includes any that have been registered, in addition to those that are installed with ICU4J. |
ULocale[] getAvailableULocales ()
[icu]返回安装了collators的语言环境集合,如ULocale对象。 ULocale对象支持RFC 3066。
Returns | |
---|---|
ULocale[] |
the list of locales in which collators are installed. This list includes any that have been registered, in addition to those that are installed with ICU4J. |
CollationKey getCollationKey (String source)
将字符串转换为适用于高效重复比较的整理键。 所得到的关键取决于整理者的规则,强度和分解模式。
请注意,整理键通常比简单比较效率低。 有关更多详细信息,请参阅ICU用户指南。
有关更多信息,请参阅CollationKey类文档。
Parameters | |
---|---|
source |
String : the string to be transformed into a CollationKey. |
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组成的字符。
有关更多详细信息,请参阅Collator类描述。
基类方法总是返回NO_DECOMPOSITION
。 如果合适的话,子类应该覆盖它。
Returns | |
---|---|
int |
the decomposition mode |
String getDisplayName (Locale objectLocale, Locale displayLocale)
[icu]返回objectLocale的collator的名称,已针对displayLocale进行了本地化。
Parameters | |
---|---|
objectLocale |
Locale : the locale of the collator |
displayLocale |
Locale : the locale for the collator's display name |
Returns | |
---|---|
String |
the display name |
String getDisplayName (ULocale objectLocale)
[icu]返回针对默认的 DISPLAY
语言环境本地化的objectLocale的collator的名称。
Parameters | |
---|---|
objectLocale |
ULocale : the locale of the collator |
Returns | |
---|---|
String |
the display name |
也可以看看:
String getDisplayName (ULocale objectLocale, ULocale displayLocale)
[icu]返回objectLocale的collator的名称,已针对displayLocale进行了本地化。
Parameters | |
---|---|
objectLocale |
ULocale : the locale of the collator |
displayLocale |
ULocale : the locale for the collator's display name |
Returns | |
---|---|
String |
the display name |
String getDisplayName (Locale objectLocale)
[icu]返回objectLocale的collator的名称,本地化为默认的 DISPLAY
语言环境。
Parameters | |
---|---|
objectLocale |
Locale : the locale of the collator |
Returns | |
---|---|
String |
the display name |
也可以看看:
int[] getEquivalentReorderCodes (int reorderCode)
检索与给定的重新订购代码分组的所有重新订购代码。 一些重排代码被分组并且必须重新排列在一起。 从ICU 55开始,脚本只在基本相等时重新排列,例如平假名和片假名。
Parameters | |
---|---|
reorderCode |
int : The reorder code to determine equivalence for. |
Returns | |
---|---|
int[] |
the set of all reorder codes in the same group as the given reorder code. |
ULocale getFunctionalEquivalent (String keyword, ULocale locID)
[icu]针对整理服务,针对给定的请求语言环境返回相对于给定关键字的功能上等效的语言环境。
Parameters | |
---|---|
keyword |
String : a particular keyword as enumerated by getKeywords. |
locID |
ULocale : The requested locale |
Returns | |
---|---|
ULocale |
the locale |
ULocale getFunctionalEquivalent (String keyword, ULocale locID, boolean[] isAvailable)
[icu]针对整理服务,针对给定的请求语言环境返回相对于给定关键字的功能上等效的语言环境。 如果两个语言环境返回相同的结果,则为这些语言环境实例化的整理者将表现等效。 反过来并不总是如此; 由于内部细节,两名校友实际上可能是等效的,但返回不同的结果。 返回结果没有上述内容的其他含义,并且对两个语言环境之间的关系没有任何意义。 这适用于希望缓存整理器的应用程序,或者在可能的情况下重新使用整理器。 功能等同物可能随时间而改变。 欲了解更多信息,请参阅ICU用户指南的Locales and Services部分。
Parameters | |
---|---|
keyword |
String : a particular keyword as enumerated by getKeywords. |
locID |
ULocale : The requested locale |
isAvailable |
boolean : If non-null, isAvailable[0] will receive and output boolean that indicates whether the requested locale was 'available' to the collation service. If non-null, isAvailable must have length >= 1. |
Returns | |
---|---|
ULocale |
the locale |
Collator getInstance ()
返回当前默认语言环境的Collator。 缺省语言环境由java.util.Locale.getDefault()确定。
Returns | |
---|---|
Collator |
the Collator for the default locale (for example, en_US) if it is created successfully. Otherwise if there is no Collator associated with the current locale, the root collator will be returned. |
也可以看看:
Collator getInstance (Locale locale)
返回所需语言环境的Collator。
对于某些语言,可以使用多种归类类型; 例如,“de-u-co-phonebk”。 从ICU 54开始,也可以通过区域设置关键字,在旧的区域设置扩展语法(“el @ colCaseFirst = upper”,仅限于ULocale
)或语言标记语法(“el-u-kf-upper” )。 见User Guide: Collation API 。
Parameters | |
---|---|
locale |
Locale : the desired locale. |
Returns | |
---|---|
Collator |
Collator for the desired locale if it is created successfully. Otherwise if there is no Collator associated with the current locale, the root collator will be returned. |
Collator getInstance (ULocale locale)
[icu]返回所需语言环境的Collator。
对于某些语言,可以使用多种归类类型; 例如,“de @ collation =电话簿”。 从ICU 54开始,也可以通过区域设置关键字以旧的区域扩展语法(“el @ colCaseFirst = upper”)或语言标记语法(“el-u-kf-upper”)来指定排序规则属性。 见User Guide: Collation API 。
Parameters | |
---|---|
locale |
ULocale : the desired locale. |
Returns | |
---|---|
Collator |
Collator for the desired locale if it is created successfully. Otherwise if there is no Collator associated with the current locale, the root collator will be returned. |
String[] getKeywordValues (String keyword)
[icu]给定关键字,返回当前正在使用的关键字的所有值的数组。
Parameters | |
---|---|
keyword |
String : one of the keywords returned by getKeywords. |
Returns | |
---|---|
String[] |
也可以看看:
String[] getKeywordValuesForLocale (String key, ULocale locale, boolean commonlyUsed)
[icu]给定一个键和一个语言环境,以一个首选顺序返回一个字符串值数组,它会产生变化。 这些都是且仅有那些值,其中由输入语言环境加上输入关键字和该值形成的语言环境的服务的打开(创建)具有与仅使用输入语言环境创建的行为不同的行为。
Parameters | |
---|---|
key |
String : one of the keys supported by this service. For now, only "collation" is supported. |
locale |
ULocale : the locale |
commonlyUsed |
boolean : if set to true it will return only commonly used values with the given locale in preferred order. Otherwise, it will return all the available values for the locale. |
Returns | |
---|---|
String[] |
an array of string values for the given key and the locale. |
String[] getKeywords ()
[icu]返回与整理相关的所有可能关键字的数组。 此时,此服务唯一可识别的关键字是“整理”。
Returns | |
---|---|
String[] |
an array of valid collation keywords. |
也可以看看:
int getMaxVariable ()
[icu]返回字符受备用处理行为影响的最大重新排序组。
基类实现返回Collator.ReorderCodes.PUNCTUATION。
Returns | |
---|---|
int |
the maximum variable reordering group. |
也可以看看:
int[] getReorderCodes ()
检索该整理器的重新排序代码。 这些重新排序的代码是UScript代码和ReorderCodes的组合。
Returns | |
---|---|
int[] |
a copy of the reordering codes for this collator; if none are set then returns an empty array |
int getStrength ()
返回此Collator的强度属性。 强度属性决定了认为重要的最小差异水平。 [icu]注意:这可以返回QUERERNARY的强度,这是JDK版本不支持的。
有关更多详细信息,请参阅Collator类描述。
基类方法总是返回TERTIARY
。 如果合适的话,子类应该覆盖它。
Returns | |
---|---|
int |
this Collator's current strength attribute. |
UnicodeSet getTailoredSet ()
[icu]返回一个UnicodeSet,其中包含在该调整器中定制的所有字符和序列。
Returns | |
---|---|
UnicodeSet |
a pointer to a UnicodeSet object containing all the code points and sequences that may sort differently than in the root collator. |
VersionInfo getUCAVersion ()
[icu]返回此collator对象的UCA版本。
Returns | |
---|---|
VersionInfo |
the version object associated with this collator |
int getVariableTop ()
[icu]获取Collator的变量top值。
Returns | |
---|---|
int |
the variable top primary weight |
也可以看看:
VersionInfo getVersion ()
[icu]返回此collator对象的版本。
Returns | |
---|---|
VersionInfo |
the version object associated with this collator |
boolean isFrozen ()
确定对象是否被冻结。
解冻的Collator是可变的,不是线程安全的。 冻结的Collator是不可变的并且是线程安全的。
Returns | |
---|---|
boolean |
void setDecomposition (int decomposition)
设置此Collator的分解模式。 通过使用CANONICAL_DECOMPOSITION设置此分解属性,Collator可以正确处理未标准化的文本,产生与文本标准化相同的结果。 如果设置了NO_DECOMPOSITION,则用户有责任确保所有文本在比较前或获取CollationKey之前已经处于适当的形式。 调整分解模式允许用户选择更快和更完整的整理行为。
由于许多世界语言不需要文本标准化,因此大多数语言环境都将NO_DECOMPOSITION设置为默认分解模式。
基类方法什么都不做。 如果合适的话,子类应该覆盖它。
有关分解模式的描述,请参阅getDecomposition。
Parameters | |
---|---|
decomposition |
int : the new decomposition mode |
Throws | |
---|---|
IllegalArgumentException |
If the given value is not a valid decomposition mode. |
Collator setMaxVariable (int group)
[icu]将变量top设置为指定重排序组的顶部。 变量top决定了受备用处理行为影响的最高排序字符。 如果该属性设置为UCOL_NON_IGNORABLE,则变量top不起作用。
基类实现抛出一个UnsupportedOperationException。
Parameters | |
---|---|
group |
int : one of Collator.ReorderCodes.SPACE, Collator.ReorderCodes.PUNCTUATION, Collator.ReorderCodes.SYMBOL, Collator.ReorderCodes.CURRENCY; or Collator.ReorderCodes.DEFAULT to restore the default max variable group |
Returns | |
---|---|
Collator |
this |
也可以看看:
void setReorderCodes (int... order)
设置该整理器的重新排序代码。 排序重新排序允许脚本和其他一组字符相对于彼此移动。 这种重新排序是在DUCET / CLDR标准整理顺序的基础上完成的。 重新排序可以指定要放置在排序顺序的开始和/或结束处的组。 这些组使用UScript代码和Collator.ReorderCodes
条目进行指定。
默认情况下,重新排序为订单开始指定的代码按照几个特殊的非脚本块之后的顺序排列。 这些特殊的字符组是空格,标点符号,货币和数字。 这些特殊小组用Collator.ReorderCodes
条目表示。 如果在重新排序中明确指定了这些特殊组,则脚本组可以与这些特殊的非脚本组混合。
特殊代码OTHERS
表示在给定的重新排序代码列表中未明确提及的任何脚本。 任何在OTHERS之后的事情都会按照给定的顺序进行重新排序。
特殊重排序代码DEFAULT
将重新排列该配页器的重新排序为该配页器的默认值。 默认的重新排序可能是DUCET / CLDR顺序,或者可能是根据资源数据或规则创建此配页器时指定的重新排序。 DEFAULT代码必须是使用它时提供的唯一代码。 如果不是,则IllegalArgumentException
将被抛出。
特殊订货代码NONE
将删除该整理器的任何重新排序。 设置不重新排序的结果将是使用DUCET / CLDR排序。 NONE代码必须是使用它时提供的唯一代码。
Parameters | |
---|---|
order |
int : the reordering codes to apply to this collator; if this is null or an empty array then this clears any existing reordering |
void setStrength (int newStrength)
设置此Collator的强度属性。 强度属性决定了比较过程中认为重要的最小差异水平。
基类方法什么都不做。 如果合适的话,子类应该覆盖它。
有关使用示例,请参阅Collator类描述。
Parameters | |
---|---|
newStrength |
int : the new strength value. |
Throws | |
---|---|
IllegalArgumentException |
if the new strength value is not valid. |