码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSe:Comparator

时间:2017-08-04 20:35:01      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:执行   array   blog   ring   .com   简单   tor   javase   ase   

今天,公司里有一个萌萌的妹子问我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

标签:执行   array   blog   ring   .com   简单   tor   javase   ase   

原文地址:http://www.cnblogs.com/f1194361820/p/7286835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!