我有一个用Results填充的ArrayList,每个结果都有一个名为resultValue的属性,该属性存储一个double。我想基于属性resultValue的值对ArrayList进行排序,并能够像这样将其打印出来:
结果名称与resultValue
结果名称与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;
}
}
在包含存储结果的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());
}
}
最佳答案
您已经重新发明了轮子;使用JDK使您的代码更简单易读:
public int compareTo(Result otherResult) {
return Double.compare(otherResult.resultValue(), resultValue());
}
还要注意传递给
compare()
的参数的顺序-这将为您提供所需的顺序(降序)。关于java - 要基于属性的值对ArrayList进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34571007/