比较器在Java中使用double

时间:2018-12-06 06:32:27

标签: java eclipse comparator

此代码

public class MyComparatorWinPCT implements Comparator<Team> {

@Override
public int compare(Team o1, Team o2) {
    // TODO Auto-generated method stub
    if(o1.rWinPCT > o2.rWinPCT)
    {
        return -1;
    }
    if(o1.rWinPCT < o2.rWinPCT)
    {
        return 0;
    }

    return 1;
 }

}

产生此输出。

  

休斯顿火箭队,1,0.793

     

金州勇士,2,0.707

     

亚特兰大老鹰队,3岁,0.293

     

俄克拉荷马城雷霆,4,0.585

这里是调用方法的方式。

Collections.sort(teams, new MyComparatorWinPCT());

胜利的百分比被用来比较,这是双倍。我已经尝试过return语句的每个组合,但无法正确执行。我需要根据获胜百分比按降序排列。首先是最高的获胜百分比,然后依此类推。

2 个答案:

答案 0 :(得分:8)

您可以在代码中进行以下更改:

public int compare(Team o1, Team o2) {
    return Double.compare(o1.rWinPCT, o2.rWinPCT);
}

答案 1 :(得分:1)

或者,您可以使用以下方法摆脱自定义比较器的作用:

Collections.sort(teams, Comparator.comparingDouble(Team::getrWinPCT)); // getter required

如果teamsList,则进一步

teams.sort(Comparator.comparingDouble(Team::getrWinPCT));