如何创建比较器?

How to create comparator?

如何创建一个比较器来比较 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);
 }

无法定义会产生您想要的输出的 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"<"10".

您不能为字符串与整数的比较定义比较器,因为我们不能将字母表与整数值进行比较。

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

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, 测试, y]