CollationKey
表示遵守特定 Collator
对象规则的 String
。比较两个 CollationKey
将返回它们所表示的 String
的相对顺序。使用 CollationKey
来比较 String
通常比使用 Collator.compare
更快。因此,当必须多次比较 String
时(例如,对一个 String
列表进行排序),使用 CollationKey
会更高效。
不能直接创建 CollationKey
。而是通过调用 Collator.getCollationKey
来生成。只能比较同一个 Collator
对象生成的 CollationKey
。
为一个 String
生成 CollationKey
涉及到检查整个 String
,并将它转换成可以按位比较的一系列位。一旦生成了键,就允许进行快速比较。当 String
需要多次比较时,以更快速的比较方式生成键的成本可以忽略不计。另一方面,比较的结果通常由每个 String
的第一对字符确定。Collator.compare
只检查实际需要比较的字符,当进行单次比较时,此比较方式更快。
实例出一个常见的通讯录列表,其中包含正常的名称,还有一些非正常的英文+数字(这种情况是比较常见的):
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
之后我们需要实例化 Collator,并获取当前语言环境,通过重写比较器 Comparator来调用 Collections.sort() 方法,代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
输出结果如下:
- 1
- 2
数字排在最前,英文字母其次,汉字则按照拼音进行排序。