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
如果 teams
是 List
那么进一步到
teams.sort(Comparator.comparingDouble(Team::getrWinPCT));
这个代码
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
如果 teams
是 List
那么进一步到
teams.sort(Comparator.comparingDouble(Team::getrWinPCT));