Java 中使用双精度的比较器

Comparator using a double in Java

这个代码

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;
 }

}

生成此输出。

Houston Rockets, 1, 0.793

Golden State Warriors, 2, 0.707

Atlanta Hawks, 3, 0.293

Oklahoma City Thunder, 4, 0.585

下面是方法的调用方式。

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

正在使用胜率进行比较,结果是双倍。我已经尝试了 return 语句的每个组合,但无法正确使用。我需要根据胜率降序排列。首先是胜率最高的,然后依次类推。

您可以对代码进行以下更改:

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

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

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

如果 teamsList 那么进一步到

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