当必须多次比较字符串时,例如在对字符串列表进行排序时。 使用CollationKey类更有效。 使用CollationKey比较字符串通常比使用Collator.compare()更快。
您不能直接创建CollationKey。 而是通过调用Collator.getCollationKey()方法生成它们。 您只能比较从同一个Collator对象生成的CollationKey。
package org.nhooo.example.text;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Arrays;
import java.util.Collections;
public class CollationKeyExample {
public static void main(String[] args) {
String[] countries = {
"German",
"United Kingdom",
"United States",
"French",
"Japan",
"Myanmar",
"India"
};
System.out.println("original:");
System.out.println(Arrays.toString(countries));
// 获取默认语言环境的整理器对象
Collator collator = Collator.getInstance();
// 创建并初始化CollationKey数组
CollationKey[] keys = new CollationKey[countries.length];
for (int i = 0; i < countries.length; i++) {
// 通过调用生成CollationKey
// 然后将Collator.getCollationKey()方法分配给
// keys,它是CollationKey的数组。
// 给定String的CollationKey基于
// 整理器的整理规则。
keys[i] = collator.getCollationKey(countries[i]);
}
// 排序键数组
Collections.sort(Arrays.asList(keys));
// 打印出排序后的数组
System.out.println("sorted result: ");
StringBuilder sb = new StringBuilder("[");
for (CollationKey key : keys) {
sb.append(key.getSourceString()).append(",");
}
sb.deleteCharAt(sb.length() - 1).append("]");
System.out.println(sb.toString());
}
}以下是程序的结果:
original: [German, United Kingdom, United States, French, Japan, Myanmar, India] sorted result: [French,German,India,Japan,Myanmar,United Kingdom,United States]