美文网首页
2018-10-29

2018-10-29

作者: 单是一个姓 | 来源:发表于2018-10-30 00:08 被阅读0次

    list排序、Collections排序

    排序两种方式

    1 对象实现Comparable接口中compareTo方法
    2 不用继承接口,外部直接比较,实现方法 Collections.sort( list, new Comparator() {...}) 
    

    不同之处

    1 用 Comparator 是策略模式,就是不改变对象自身,而用一个策略对象来改变它的行为。 
    2 Comparable改变对象自身。耦合性比较高
    

    Integer、String等都实现了Comparable接口,默认是升序排序(排序后前者小于后者)

    • 对于String,它是先比较对应字符的大小(ASCII码顺序,升序),如果都相同,则比较字符的长度(升序)
    • Integer按照大小
    // 正序排列
    public int compare(int o1, int o2) {
        return o1 - o2;
    }
    // 逆序排列
    public int compare(int o1, int o2) {
        return o2 - o1;
    }
    # 返回负数表示o1排在o2前面,返回正数代表o1排在o2后面
    
    List list = new ArrayList<>();
    list.add(2);
    list.add(1);
    Collections.sort(list);
    System.out.println(list);    //[1, 2]
    
    List list = new ArrayList<>();
    list.add("e");
    list.add("f");
    Collections.sort(list);
    System.out.println(list);  //[e, f]
    

    具体查看源码

    注意:

    1  Collections.reverse(list) 是反转,不是倒叙或者降序
    2 Collections.sort(list, Collator.getInstance(java.util.Locale.CHINA)); // 中文进行排序
    

    相关文章

      网友评论

          本文标题:2018-10-29

          本文链接:https://www.haomeiwen.com/subject/wrcwtqtx.html