问题0027 - 排序

文章

  • Comparable 接口和 Comparator 接口的实现(十一)
  • Collator和Comparator 接口实现中文字符串排序(十二)

总结

1. 按照指定语言,对字符串进行排序. 使用Collator .

  1. 使用方法一,使用 CollationKey getCollationKey(String source) 获取到CollationKey实例后进行比较.
List list = ***;
Comparator comparator = new Comparator() {
    public int compare(String o1, String o2) {
        //Collator.getInstance传入参数,决定按照哪个地区的语言进行排序
        Collator collator = Collator.getInstance(Locale.getDefault());
        return collator.getCollationKey(o1).compareTo(
            collator.getCollationKey(o2));
    }
};
Collections.sort(list, comparator);
  1. 使用方法二,直接使用 Collator中 int compare(String source, String target) 直接比较2个字符串.
List list = ***;
Comparator comparator = new Comparator() {
    public int compare(String o1, String o2) {
        //Collator.getInstance传入参数,决定按照哪个地区的语言进行排序
        Collator collator = Collator.getInstance(Locale.getDefault());
        return collator.compare(o1, o2);
    }
};
Collections.sort(list, comparator);
  1. Collator.getInstance(Locale desiredLocale) 获取按照指定地区语言进行字符串比较的Collator.
  2. 什么是CollationKey,什么时候使用CollationKey,什么时候直接使用Collator.compare
  • 什么是CollationKey
    • CollationKey表示在特定规则Collator下的String实例.
    • 两个CollationKey比较结果(compareTo结果)和对应的2个String的比较结果是一致的.
  • 什么时候使用CollationKey
    Using CollationKeys
     * to compare Strings is generally faster than using
     * Collator.compare. Thus, when the Strings
     * must be compared multiple times, for example when sorting a list
     * of Strings. It's more efficient to use CollationKeys.
    
    • 当字符串需要进行多次比较,例如1个由String构成的list,对其进行排序使用CollationKey效率更高,如果仅仅是2个字符串比较1次,直接使用Collator实例执行compare效率更高.

你可能感兴趣的:(问题0027 - 排序)