sam*_*sam 4 java arrays sorting
我按一列的值对2D数组进行排序.第一列包含国家/地区代码,第二列包含该国家/地区的滑冰者名称,第三列包含该国家/地区的分数:
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";
Run Code Online (Sandbox Code Playgroud)
我有这样的工作:
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]);
}
Run Code Online (Sandbox Code Playgroud)
一切都有效,除了输出中的这个怪癖:
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
Run Code Online (Sandbox Code Playgroud)
如您所见,首先显示得分最低的国家(GBR,8.0).其余的按照我想要的降序显示.我无法弄清楚为什么.
这是因为您将分数作为字符串进行比较,因此它们按字母顺序排序.
尝试用以下代码替换函数的最后一行:
return new Double(secondScore).compareTo(new Double(score1));
Run Code Online (Sandbox Code Playgroud)