[英]Want to sort ArrayList based on value of attribute
我有一個用Results填充的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;
}
}
在包含存儲結果的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()
的參數的順序-這將為您提供所需的順序(降序)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.