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的主要内容,如果未能解决你的问题,请参考以下文章