簡體   English   中英

要基於屬性的值對ArrayList進行排序

[英]Want to sort ArrayList based on value of attribute

我有一個用Results填充的ArrayList,每個結果都有一個名為resultValue的屬性,該屬性存儲一個double。 我想基於屬性resultValue的值對ArrayList進行排序,並能夠像這樣將其打印出來:

  1. 結果名稱與resultValue

  2. 結果名稱與resultValue

  3. 結果名稱與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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM