zoukankan      html  css  js  c++  java
  • JavaSe:Comparator

    今天,公司里有一个萌萌的妹子问我java 中的comparator是怎么回事。参数分别是什么,返回值又是什么,为此,我写了一个简单的程序告诉了她:

    public static void main (String[] args){
        List<String> list = new ArrayList<String>(Arrays.asList(new String[]{"1", "a", "222", "221","221"}));
    Collections.sort(list,new Comparator(){
    public int compare(String str1, String str2){
                       int r = str1.compareTo(str2);
                       System.out.println(str1 + "-" + str2 +"=" + r);
                       return r;
                 }
         }) ;
        System.out.println(list.toString());
    
    }

    执行结果:

                                                          list
    a
    -1=48 [1, a] 222-a=-47 222-a=-47 221-1=1 [1, 222, a] 221-222=-1 221-1=1 [1, 221, 222, a] 221-221=0 [1, 221, 222, 222, a] [1, 221, 221, 222, a];

    通过这个执行结果,我们可以看出一下几点:

    以compare(a1, a2)为例:

    1)其中a1 是要添加的数数据, a2是从集合中取出来的与a1比较的数据

    2) 返回值 >0时,放后面。

           返回值<0 时,放前面。

    3)集合默认是升序排序的。如果想要降序排序,你在比较时,应该是 a2 - a1 (也就是拿第二个参数跟第一个比较)。

    另外:

    4)List 在排序时,采用的是二分法排序。

  • 相关阅读:
    Cheatsheet: 2010 05.25 ~ 05.31
    Cheatsheet: 2010 07.01 ~ 07.08
    Cheatsheet: 2010 07.22 ~ 07.31
    Cheatsheet: 2010 06.01 ~ 06.07
    Cheatsheet: 2010 05.11 ~ 05.17
    Cheatsheet: 2010 06.08 ~ 06.15
    Cheatsheet: 2010 06.16 ~ 06.22
    Cheatsheet: 2010 06.23 ~ 06.30
    2020.7.20第十五天
    2020.7.19第十四天
  • 原文地址:https://www.cnblogs.com/f1194361820/p/7286835.html
Copyright © 2011-2022 走看看