返回介绍

java.text 类 Collator

发布于 2019-10-04 09:51:21 字数 17623 浏览 957 评论 0 收藏 0

java.lang.Object
  └java.text.Collator
所有已实现的接口:
Cloneable, Comparator<Object>
直接已知子类:
RuleBasedCollator

public abstract class Collator
extends Object
 
implements Comparator<Object>, Cloneable
 

Collator 类执行区分语言环境的 String 比较。使用此类可为自然语言文本构建搜索和排序例程。

Collator 是一个抽象基类。其子类实现具体的整理策略。Java 2 平台目前提供了 RuleBasedCollator 子类,它适用于很多种语言。还可以创建其他子类,以处理更多的专门需要。

与其他区分语言环境的类一样,可以使用静态工厂方法 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");

可以设置 Collatorstrength 属性来确定比较中认为显著的差异级别。提供了四种 strength: PRIMARYSECONDARYTERTIARYIDENTICAL 。对语言特征的确切 strength 赋值和语言环境相关。例如在捷克语中,"e" 和 "f" 被认为是 PRIMARY 差异,而 "e" 和 "?" 则是 SECONDARY 差异,"e" 和 "E" 是 TERTIARY 差异,"e" 和 "e" 是 IDENTICAL。下面的示例显示了如何针对美国英语忽略大小写和重音。

 //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 所创建的。注:不能比较由不同 Collator 创建的 CollationKey 。有关使用 CollationKey 的示例,请参阅 CollationKey 的类描述。

另请参见:
RuleBasedCollator , CollationKey , CollationElementIterator , Locale

字段摘要
staticintCANONICAL_DECOMPOSITION

Decomposition 模式值。

staticintFULL_DECOMPOSITION

Decomposition 模式值。

staticintIDENTICAL

Collator 的 strength 值。

staticintNO_DECOMPOSITION

Decomposition 模式值。

staticintPRIMARY

Collator 的 strength 值。

staticintSECONDARY

Collator 的 strength 值。

staticintTERTIARY

Collator 的 strength 值。

构造方法摘要
protectedCollator()

默认的构造方法。

方法摘要
Objectclone()

重写 Cloneable

intcompare(Objecto1, Objecto2)

比较此方法两个参数的顺序。

abstract intcompare(Stringsource, Stringtarget)

根据此 Collator 的整理规则来比较源字符串和目标字符串。

booleanequals(Objectthat)

比较两个 Collator 的相等性。

booleanequals(Stringsource, Stringtarget)

根据此 Collator 的整理规则比较两个字符串是否相等的便捷方法。

staticLocale[]getAvailableLocales()

返回一个所有语言环境的数组,此类的 getInstance 方法可为这些语言环境返回已本地化的实例。

abstract CollationKeygetCollationKey(Stringsource)

将该 String 转换为一系列可以和其他 CollationKeys 按位进行比较的位。

intgetDecomposition()

获得此 Collator 的 decomposition 模式。

staticCollatorgetInstance()

获得当前默认语言环境的 Collator。

staticCollatorgetInstance(LocaledesiredLocale)

获得所需语言环境的 Collator。

intgetStrength()

返回此 Collator 的 strength 属性。

abstract inthashCode()

生成此 Collator 的哈希码。

voidsetDecomposition(intdecompositionMode)

设置此 Collator 的 decomposition 模式。

voidsetStrength(intnewStrength)

设置此 Collator 的 strength 属性。

从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, toString, wait, wait, wait

字段详细信息

PRIMARY

public static final int PRIMARY
Collator 的 strength 值。设置该值后,比较期间仅将 PRIMARY 的差异视为显著的。对语言特征的 strength 赋值和语言环境相关。常见的例子是将不同的基本字母("a" 和 "b")视为 PRIMARY 差异。
另请参见:
setStrength(int) , getStrength() , 常量字段值

SECONDARY

public static final int SECONDARY
Collator 的 strength 值。设置该值后,比较期间仅将 SECONDARY 的差异视为显著的。对语言特征的 strength 赋值和语言环境相关。常见的例子是将相同基本字母的不同重音形式("a" 和 "?")视为 SECONDARY 差异。
另请参见:
setStrength(int) , getStrength() , 常量字段值

TERTIARY

public static final int TERTIARY
Collator 的 strength 值。设置该值后,比较期间仅将 TERTIARY 及以上的差异视为显著的。对语言特征的 strength 赋值和语言环境相关。常见的例子是将大小写差异(如 "a" 和 "A")视为 TERTIARY 差异。
另请参见:
setStrength(int) , getStrength() , 常量字段值

IDENTICAL

public static final int IDENTICAL
Collator 的 strength 值。设置该值后,比较期间将所有的差异都视为显著的。对语言特征的 strength 赋值和语言环境相关。常见的例子是控制字符("\u0001" 和 "\u0002")在 PRIMARY、SECONDARY 和 TERTIARY 级别视为相等的,但在 IDENTICAL 级别则是不同的。另外,如果将 decomposition 设置为 NO_DECOMPOSITION,则像 "\u00C0"(A-重音)的前构重音和像 "A\u0300"(A,组合重音)的组合重音将在 IDENTICAL 级别被视为是显著差异。
另请参见:
常量字段值

NO_DECOMPOSITION

public static final int NO_DECOMPOSITION
Decomposition 模式值。设置为 NO_DECOMPOSITION 时,不会为了整理而分解重音字符。这是默认的设置并可提供最快的整理,但是仅对那些不使用重音的语言才能得出正确的结果。
另请参见:
getDecomposition() , setDecomposition(int) , 常量字段值

CANONICAL_DECOMPOSITION

public static final int CANONICAL_DECOMPOSITION
Decomposition 模式值。设置为 CANONICAL_DECOMPOSITION 时,将为整理而分解那些根据 Unicode 标准为规范变体的字符。要获得重音字符的正确整理,应该使用该值。

CANONICAL_DECOMPOSITION 对应于 Unicode Technical Report #15 中所描述的 Normalization Form D。

另请参见:
getDecomposition() , setDecomposition(int) , 常量字段值

FULL_DECOMPOSITION

public static final int FULL_DECOMPOSITION
Decomposition 模式值。设置为 FULL_DECOMPOSITION 时,将为整理而分解 Unicode 规范变体和 Unicode 兼容变体。这样就不仅能排序重音字符,而且对于具有特殊格式的字符,也能够使用其标准化形式进行排序。例如,半角和全角的 ASCII 字符与片假名字符就能一同排序了。FULL_DECOMPOSITION 是最完整的,因此也是最慢的 decomposition 模式。

FULL_DECOMPOSITION 对应于 Unicode Technical Report #15 中所描述的 Normalization Form KD。

另请参见:
getDecomposition() , setDecomposition(int) , 常量字段值

构造方法详细信息

Collator

protected Collator()
默认的构造方法。此构造方法是受保护的,所以子类可以访问它。用户通常调用 getInstance 工厂方法来创建一个 Collator 子类。
另请参见:
getInstance()

方法详细信息

getInstance

public static Collator getInstance()
获得当前默认语言环境的 Collator。通过 java.util.Locale.getDefault 来确定默认的语言环境。
返回:
默认语言环境(例如 en_US)的 Collator。
另请参见:
Locale.getDefault()

getInstance

public static Collator getInstance(LocaledesiredLocale)
获得所需语言环境的 Collator。
参数:
desiredLocale - 所需的语言环境。
返回:
所需语言环境的 Collator。
另请参见:
Locale , ResourceBundle

compare

public abstract int compare(Stringsource,
                            Stringtarget)
根据此 Collator 的整理规则来比较源字符串和目标字符串。根据源字符串是小于、等于或大于目标字符串来返回负整数、零或正整数。有关此方法的使用示例,请参阅 Collator 的类描述。

对于一次比较,此方法具有最佳性能。如果在多次比较中涉及给定的 String,则 CollationKey.compareTo 具有最佳性能。有关使用 CollationKeys 的示例,请参阅 Collator 的类描述。

参数:
source - 源字符串。
target - 目标字符串。
返回:
返回一个整数值。如果源小于目标,则该值小于零;如果源等于目标,则该值为零;如果源大于目标,则该值大于零。
另请参见:
CollationKey , getCollationKey(java.lang.String)

compare

public int compare(Objecto1,
                   Objecto2)
比较此方法两个参数的顺序。第一个参数小于、等于或大于第二个参数时分别返回负整数、零或正整数。

此实现仅返回 compare((String)o1, (String)o2)

指定者:
接口 Comparator<Object> 中的 compare
参数:
o1 - 要比较的第一个对象。
o2 - 要比较的第二个对象。
返回:
第一个参数小于、等于或大于第二个参数时分别返回负整数、零或正整数。
抛出:
ClassCastException - 无法将参数强制转换为 String。
从以下版本开始:
1.2
另请参见:
Comparator

getCollationKey

public abstract CollationKey getCollationKey(Stringsource)
将该 String 转换为一系列可以和其他 CollationKeys 按位进行比较的位。在多次比较中均涉及 String 时,CollationKey 的性能要优于 Collator.compare。有关使用 CollationKeys 的示例,请参阅 Collator 的类描述。
参数:
source - 将要被转换为整理键的字符串。
返回:
根据此 Collator 的整理规则为给定 String 创建的 CollationKey。如果源 String 为 null,则返回一个 null CollationKey。
另请参见:
CollationKey , compare(java.lang.String, java.lang.String)

equals

public boolean equals(Stringsource,
                      Stringtarget)
根据此 Collator 的整理规则比较两个字符串是否相等的便捷方法。
参数:
source - 要比较的源字符串。
target - 要比较的目标字符串。
返回:
如果根据整理规则,两个字符串相等,则返回 true;否则返回 false。
另请参见:
compare(java.lang.String, java.lang.String)

getStrength

public int getStrength()
返回此 Collator 的 strength 属性。strength 属性确定了在比较期间被视为显著的最低差异级别。有关此方法的使用示例,请参阅 Collator 的类描述。
返回:
此 Collator 的当前 strength 属性。
另请参见:
setStrength(int) , PRIMARY , SECONDARY , TERTIARY , IDENTICAL

setStrength

public void setStrength(intnewStrength)
设置此 Collator 的 strength 属性。strength 属性确定了在比较期间被视为显著的最低差异级别。有关此方法的使用示例,请参阅 Collator 的类描述。
参数:
newStrength - 新的 strength 值。
抛出:
IllegalArgumentException - 如果新的 strength 值不是 PRIMARY、SECONDARY、TERTIARY 或 IDENTICAL 之一。
另请参见:
getStrength() , PRIMARY , SECONDARY , TERTIARY , IDENTICAL

getDecomposition

public int getDecomposition()
获得此 Collator 的 decomposition 模式。Decomposition 确定如何处理 Unicode 组合字符。调整 decomposition 模式允许用户在更快和更完整的整理行为之间进行选择。

用于 decomposition 模式的三个值是:

  • NO_DECOMPOSITION、
  • CANONICAL_DECOMPOSITION、
  • FULL_DECOMPOSITION。
有关这三个常量含义的描述,请参阅这些常量的文档。
返回:
decomposition 模式
另请参见:
setDecomposition(int) , NO_DECOMPOSITION , CANONICAL_DECOMPOSITION , FULL_DECOMPOSITION

setDecomposition

public void setDecomposition(intdecompositionMode)
设置此 Collator 的 decomposition 模式。有关 decomposition 模式的描述,请参阅 getDecomposition。
参数:
decompositionMode - 新的 decomposition 模式。
抛出:
IllegalArgumentException - 如果给定值不是有效的 decomposition 模式。
另请参见:
getDecomposition() , NO_DECOMPOSITION , CANONICAL_DECOMPOSITION , FULL_DECOMPOSITION

getAvailableLocales

public static Locale[] getAvailableLocales()
返回一个所有语言环境的数组,此类的 getInstance 方法可为这些语言环境返回已本地化的实例。返回的数组至少必须包含一个等于 Locale.USLocale 实例。
返回:
一个语言环境数组,为这些语言环境提供了已本地化的 Collator 实例。

clone

public Object clone()
重写 Cloneable
覆盖:
Object 中的 clone
返回:
此实例的一个克隆。
另请参见:
Cloneable

equals

public boolean equals(Objectthat)
比较两个 Collator 的相等性。
指定者:
接口 Comparator<Object> 中的 equals
覆盖:
Object 中的 equals
参数:
that - 要与此 Collator 进行比较的 Collator。
返回:
如果此 Collator 与该 Collator 相同,则返回 true;否则返回 false.
另请参见:
Object.hashCode() , Hashtable

hashCode

public abstract int hashCode()
生成此 Collator 的哈希码。
覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object) , Hashtable

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文