我有一个填充了结果的ArrayList,每个结果都有一个名为resultValue的属性,它存储了一个double。我想根据属性resultValue的值对ArrayList进行排序,并能够像这样打印出来:
resultValue的结果名称
resultValue的结果名称
我的问题是:为什么这不起作用?我如何让它工作?
到目前为止,我已经在我的类中使用了一个名为Result的compareTo方法。它看起来像这样:
public int compareTo(Result otherResult) {
if (this.resultValue > otherResult.resultValue()) {
return 1;
} else if (this.resultValue < otherResult.resultValue()) {
return -1;
} else {
return 0;
}
}
在我的类中包含存储Results的ArrayList我已经完成了这个方法:
void typeOutOrderedList() {
Collections.sort(resultlist);
for (int i = 0; i < resultlist.size(); i++) {
Result res = resultlist.get(i);
System.out.println(res.competitionStartNumber() + " has the result" + res.resultValue());
}
}
答案 0 :(得分:0)
你重新发明了轮子;使用JDK使代码更简单,更易读:
public int compareTo(Result otherResult) {
return Double.compare(otherResult.resultValue(), resultValue());
}
另请注意传递给compare()
的参数的顺序 - 这将为您提供所需的顺序(降序)。