如何创建比较器?

时间:2015-03-24 08:08:25

标签: java compare

如何创建比较string的比较器,并以相反的顺序显示integer,使角色处于相同的位置。例如input=10,20,100,a,50 output应为100,50,20,a,10

class StringLengthComparator implements Comparator<String>{

@Override
 public int compare(String o1, String o2)
 {
    return -o1.compareTo(o2);
 }

2 个答案:

答案 0 :(得分:2)

无法定义可生成所需输出的Comparator,因为Comparator必须定义一致的排序,而您的要求不会。

考虑这两个输入:

10,20,100,a,50

10,20,100,a,5

首先,您希望订单为:

100,50,20,a,10

在第二个你想要的时候:

100,20,10,a,5

您无法定义Comparator,其中某些输入“a”>“10”而其他“a”&lt;“10”。

答案 1 :(得分:0)

您无法将Comparator定义为与Integer的字符串比较,因为我们无法将字母与整数值进行比较。

因此,当您使用Comaprator或Collection.sort(list&lt;&gt;)时,将始终对整数和字符串进行排序。

List<String> numAlpha=new ArrayList<String>();

        numAlpha.add("2");
        numAlpha.add("8");
        numAlpha.add("7");
        numAlpha.add("b");
        numAlpha.add("6");

        numAlpha.add("y");
        numAlpha.add("test");
        numAlpha.add("alpha");

        Collections.sort(numAlpha);
        System.out.println(numAlpha.toString());

输出: [2,6,7,8,alpha,b,test,y]