此代码
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语句的每个组合,但无法正确执行。我需要根据获胜百分比按降序排列。首先是最高的获胜百分比,然后依此类推。
答案 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
如果teams
是List
,则进一步
teams.sort(Comparator.comparingDouble(Team::getrWinPCT));