作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在按一列的值对二维数组进行排序。第一列是国家代码,第二列是那个国家的选手名字,第三列是那个国家的分数:
skateArray[1][0] = "JPN";
skateArray[1][1] += "Yuzuru HANYU";
skateArray[1][2] = "13";
skateArray[2][0] = "USA";
skateArray[2][1] = "Jeremy ABBOTT "
skateArray[2][2] = "17";
我让它像这样工作:
Arrays.sort(skateArray, new Comparator<String[]>() {
public int compare(final String[] entry1, final String[] entry2)
{
final String firstScore = entry1[2];
final String secondScore = entry2[2];
return secondScore.compareTo(firstScore);
}
});
for (final String[] string : skateArray) {
System.out.println(string[0] + " " + string[1] + " " + string[2]);
}
除了输出中的这个怪癖外,一切正常:
GBR 8.0
RUS 37.0
CAN 32.0
USA 27.0
JPN 24.0
ITA 23.0
CHN 20.0
FRA 20.0
GER 17.0
UKR 10.0
如您所见,首先显示得分最低的国家(GBR,8.0)。其余的按我想要的降序显示。我不知道为什么。
最佳答案
这是因为您将分数作为字符串进行比较,所以它们按字母顺序排序。
尝试将函数的最后一行替换为:
return new Double(secondScore).compareTo(new Double(score1));
关于Java比较器乱序排序一个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592715/
序 大家好呀,我是summo,这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛,2核2G的云服务器一年只要99块钱,懂行的人应该知道这个价格在业界已经是非常良心了
我尝试根据给定的级别顺序(BFS 顺序)构造 BST。我知道这是可能的,但我不知道我该怎么写。问题是我必须使用 BFS 序列。所以,我不能在这里使用递归,我必须迭代地编写我的程序......我发现这有
我是一名优秀的程序员,十分优秀!