如何创建比较器?
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]
如何创建一个比较器来比较 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]