public abstract class Collator extends Object implements Comparator<Object>, Cloneable
Collator
类执行区域设置敏感String
比较。
您使用此类来构建自然语言文本的搜索和排序例程。
Collator
是一个抽象基类。 子类实现特定的整理策略。 一个子类, RuleBasedCollator
,目前提供了Java平台,适用于广泛的语言。 可以创建其他子类来处理更专门的需求。
像其他语言环境敏感类,你可以使用静态工厂方法, getInstance
,以获得适当Collator
对象为给定的语言环境。 您只需要查看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
进行比较。 A CollationKey
由给定的String
的Collator
对象创建。
注意: CollationKey
从不同的Collator
s不能比较。 请参阅类描述CollationKey
用于使用例如CollationKey
秒。
RuleBasedCollator
, CollationKey
, CollationElementIterator
, Locale
Modifier and Type | Field and Description |
---|---|
static int |
CANONICAL_DECOMPOSITION
分解模式值。
|
static int |
FULL_DECOMPOSITION
分解模式值。
|
static int |
IDENTICAL
整理器强度值。
|
static int |
NO_DECOMPOSITION
分解模式值。
|
static int |
PRIMARY
整理器强度值。
|
static int |
SECONDARY
整理器强度值。
|
static int |
TERTIARY
整理器强度值。
|
Modifier | Constructor and Description |
---|---|
protected |
Collator()
默认构造函数。
|
Modifier and Type | Method and Description |
---|---|
Object |
clone()
覆盖可克隆
|
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转换成可以与其他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的强度属性。
|
finalize, getClass, notify, notifyAll, toString, wait, wait, wait
comparing, comparing, comparingDouble, comparingInt, comparingLong, naturalOrder, nullsFirst, nullsLast, reversed, reverseOrder, thenComparing, thenComparing, thenComparing, thenComparingDouble, thenComparingInt, thenComparingLong
public static final int PRIMARY
public static final int SECONDARY
public static final int TERTIARY
public static final int IDENTICAL
public static final int NO_DECOMPOSITION
public static final int CANONICAL_DECOMPOSITION
CANONICAL_DECOMPOSITION对应于标准化形式D,如Unicode Technical Report #15 所述 。
public static final int FULL_DECOMPOSITION
FULL_DECOMPOSITION对应于归一化形式KD,如Unicode Technical Report #15 所述 。
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)
。
compare
在接口
Comparator<Object>
o1
- 要比较的第一个对象。
o2
- 要比较的第二个对象。
ClassCastException
- 无法将参数转换为字符串。
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
- 新的实力值。
IllegalArgumentException
- 如果新的实力值不是PRIMARY,SECONDARY,TERTIARY或IDENTICAL之一。
getStrength()
,
PRIMARY
,
SECONDARY
,
TERTIARY
,
IDENTICAL
public int getDecomposition()
分解模式的三个值为:
setDecomposition(int)
,
NO_DECOMPOSITION
,
CANONICAL_DECOMPOSITION
,
FULL_DECOMPOSITION
public void setDecomposition(int decompositionMode)
decompositionMode
- 新的分解模式。
IllegalArgumentException
- 如果给定值不是有效的分解模式。
getDecomposition()
,
NO_DECOMPOSITION
,
CANONICAL_DECOMPOSITION
,
FULL_DECOMPOSITION
public static Locale[] getAvailableLocales()
getInstance
方法可以返回本地化实例。
返回的数组表示由Java运行时支持的语言环境和安装的CollatorProvider
实现的联合。
它必须至少包含一个等于Locale.US
的语言环境实例。
Collator
实例可用。
public boolean equals(Object that)
equals
中的
Comparator<Object>
equals
在
Object
that
- 与此进行比较的Collator。
Object.hashCode()
, HashMap
public abstract int hashCode()
hashCode
在
Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)