想要根据属性值对ArrayList进行排序

时间:2016-01-02 21:41:13

标签: java sorting arraylist collections compareto

我有一个填充了结果的ArrayList,每个结果都有一个名为resultValue的属性,它存储了一个double。我想根据属性resultValue的值对ArrayList进行排序,并能够像这样打印出来:

  1. resultValue的结果名称

  2. resultValue的结果名称

  3. resultValue的结果名称
  4. 我的问题是:为什么这不起作用?我如何让它工作?

    到目前为止,我已经在我的类中使用了一个名为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());
        }
    }
    

1 个答案:

答案 0 :(得分:0)

你重新发明了轮子;使用JDK使代码更简单,更易读:

public int compareTo(Result otherResult) {
    return Double.compare(otherResult.resultValue(), resultValue());
}

另请注意传递给compare()的参数的顺序 - 这将为您提供所需的顺序(降序)。