java.lang.Object java.text.Collator
public abstract class Collator
Collator
类执行区分语言环境的 String
比较。使用此类可为自然语言文本构建搜索和排序例程。
Collator
是一个抽象基类。其子类实现具体的整理策略。Java 平台目前提供了 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");
可以设置 Collator
的 strength 属性来确定比较中认为显著的差异级别。提供了四种 strength:PRIMARY
、SECONDARY
、TERTIARY
和 IDENTICAL
。对语言特征的确切 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
的类描述。
字段摘要 | |
---|---|
static int |
CANONICAL_DECOMPOSITION Decomposition 模式值。 |
static int |
FULL_DECOMPOSITION Decomposition 模式值。 |
static int |
IDENTICAL Collator 的 strength 值。 |
static int |
NO_DECOMPOSITION Decomposition 模式值。 |
static int |
PRIMARY Collator 的 strength 值。 |
static int |
SECONDARY Collator 的 strength 值。 |
static int |
TERTIARY Collator 的 strength 值。 |
构造方法摘要 | |
---|---|
protected |
Collator() 默认的构造方法。 |
方法摘要 | |
---|---|
Object |
clone() 重写 Cloneable |
int |
compare(Object o1, Object o2) 比较此方法两个参数的顺序。 |
abstract int |
compare(String source, String target) 根据此 Collator 的整理规则来比较源字符串和目标字符串。 |
boolean |
equals(Object that) 比较两个 Collator 的相等性。 |
boolean |
equals(String source, String target) 根据此 Collator 的整理规则比较两个字符串是否相等的便捷方法。 |
static Locale[] |
getAvailableLocales() 返回一个所有受支持语言环境的数组,此类的 getInstance 方法可为这些语言环境返回已本地化的实例。 |
abstract CollationKey |
getCollationKey(String source) 将该 String 转换为一系列可以和其他 CollationKey 按位进行比较的位。 |
int |
getDecomposition() 获取此 Collator 的 decomposition 模式。 |
static Collator |
getInstance() 获取当前默认语言环境的 Collator。 |
static Collator |
getInstance(Locale desiredLocale) 获取所需语言环境的 Collator。 |
int |
getStrength() 返回此 Collator 的 strength 属性。 |
abstract int |
hashCode() 生成此 Collator 的哈希码。 |
void |
setDecomposition(int decompositionMode) 设置此 Collator 的 decomposition 模式。 |
void |
setStrength(int newStrength) 设置此 Collator 的 strength 属性。 |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int PRIMARY
setStrength(int)
,
getStrength()
,
常量字段值
public static final int SECONDARY
setStrength(int)
,
getStrength()
,
常量字段值
public static final int TERTIARY
setStrength(int)
,
getStrength()
,
常量字段值
public static final int IDENTICAL
public static final int NO_DECOMPOSITION
public static final int CANONICAL_DECOMPOSITION
CANONICAL_DECOMPOSITION 对应于 Unicode Technical Report #15 中所描述的 Normalization Form D。
public static final int FULL_DECOMPOSITION
FULL_DECOMPOSITION 对应于 Unicode Technical Report #15 中所描述的 Normalization Form KD。
构造方法详细信息 |
---|
protected Collator()
getInstance()
方法详细信息 |
---|
public static Collator getInstance()
Locale.getDefault()
public static Collator getInstance(Locale desiredLocale)
desiredLocale
- 所需的语言环境。
Locale
,
ResourceBundle
public abstract int compare(String source, String target)
对于一次比较,此方法具有最佳性能。如果在多次比较中涉及给定的 String,则 CollationKey.compareTo 具有最佳性能。有关使用 CollationKeys 的示例,请参阅 Collator 的类描述。
source
- 源字符串。
target
- 目标字符串。
CollationKey
,
getCollationKey(java.lang.String)
public int compare(Object o1, Object o2)
此实现仅返回 compare((String)o1, (String)o2)
。
Comparator<Object>
中的
compare
o1
- 要比较的第一个对象。
o2
- 要比较的第二个对象。
ClassCastException
- 无法将参数强制转换为 String。
Comparator
public abstract CollationKey getCollationKey(String source)
source
- 将要被转换为整理键的字符串。
CollationKey
,
compare(java.lang.String, java.lang.String)
public boolean equals(String source, String target)
source
- 要比较的源字符串。
target
- 要比较的目标字符串。
compare(java.lang.String, java.lang.String)
public int getStrength()
setStrength(int)
,
PRIMARY
,
SECONDARY
,
TERTIARY
,
IDENTICAL
public void setStrength(int newStrength)
newStrength
- 新的 strength 值。
IllegalArgumentException
- 如果新的 strength 值不是 PRIMARY、SECONDARY、TERTIARY 或 IDENTICAL 之一。
getStrength()
,
PRIMARY
,
SECONDARY
,
TERTIARY
,
IDENTICAL
public int getDecomposition()
用于 decomposition 模式的三个值是:
setDecomposition(int)
,
NO_DECOMPOSITION
,
CANONICAL_DECOMPOSITION
,
FULL_DECOMPOSITION
public void setDecomposition(int decompositionMode)
decompositionMode
- 新的 decomposition 模式。
IllegalArgumentException
- 如果给定值不是有效的 decomposition 模式。
getDecomposition()
,
NO_DECOMPOSITION
,
CANONICAL_DECOMPOSITION
,
FULL_DECOMPOSITION
public static Locale[] getAvailableLocales()
getInstance
方法可为这些语言环境返回已本地化的实例。 返回的数组代表 Java 运行时和已安装的
CollatorProvider
实现所支持的语言环境的联合。它至少包含一个等同于
Locale.US
的 Locale 实例。
Collator
实例。
public Object clone()
public boolean equals(Object that)
Comparator<Object>
中的
equals
Object
中的
equals
that
- 要与此 Collator 进行比较的 Collator。
Object.hashCode()
,
Hashtable
public abstract int hashCode()
Object.equals(java.lang.Object)
,
Hashtable