JavaSe:Comparator

Posted FangJiNuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 在排序时,采用的是二分法排序。

 

以上是关于JavaSe:Comparator的主要内容,如果未能解决你的问题,请参考以下文章

javaSE 集合框架—— 泛型

JavaSE系列趁着跨年的时间,学会了Java中常用的比较器和克隆接口

javaSE_07_方法

JavaSE 方法的使用

JavaSE线程基础

似懂非懂的Comparable与Comparator