问题0027 - 排序

文章

总结

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

  1. 使用方法一,使用 CollationKey getCollationKey(String source) 获取到CollationKey实例后进行比较.
List list = ***;
Comparator<String> comparator = new Comparator<String>() {
    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<String> comparator = new Comparator<String>() {
    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 <code>CollationKey</code>s
     * to compare <code>String</code>s is generally faster than using
     * <code>Collator.compare</code>. Thus, when the <code>String</code>s
     * must be compared multiple times, for example when sorting a list
     * of <code>String</code>s. It's more efficient to use <code>CollationKey</code>s.
    
    • 当字符串需要进行多次比较,例如1个由String构成的list,对其进行排序使用CollationKey效率更高,如果仅仅是2个字符串比较1次,直接使用Collator实例执行compare效率更高.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,341评论 11 349
  • 1:什么是注释?注释分为几种?注释有什么作用? 注释就是对代码的解释说明性文字,分为三种:单行注释、多行注释、文档...
    全栈工程师wql阅读 361评论 0 0
  • 序列化, 把对象转换成二进制(字节序列)存到文件中就是序列化 反序列化, 把文件中的二进制(字节序列)对象恢复到类...
    _Levi__阅读 301评论 1 0
  • CPP 1、在main执行之前和之后执行的代码可能是什么? main函数执行之前,主要就是初始化系统相关资源: 设...
    voidFan阅读 1,719评论 1 6
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 125,804评论 2 7