当必须多次比较字符串时,例如在对字符串列表进行排序时。 使用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]