【发布时间】:2015-07-23 16:10:47
【问题描述】:
我正在按一列的值对二维数组进行排序。第一列是国家代码,第二列是那个国家的选手姓名,第三列是那个国家的分数:
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)。其余的按我想要的降序显示。我不知道为什么。
【问题讨论】:
-
您尝试按数字排序,但您的值表示为字符串。 “10”和“2”哪个更大?
-
考虑创建一个带有类型属性的 POJO,而不是使用应该被解释为非字符串的字符串数组。