如何创建比较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);
}
答案 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]