我有一份有不同经历的员工名单,例如
5.0、3.3、5.5、5.6、4.5等。
当我尝试使用Math.round
对最大体验与最小体验进行排序时,给出的错误结果如下:
5.6、5.0、5.5、5.3、4.5等。
我想要这样的结果:
5.6、5.5、5.3、5.0、4.5等。
在这里,我像这样使用Collections.sort
:
Collections.sort(employeeList, new Comparator<Emp>() {
@Override
public int compare(Emp t, Emp t1) {
return Math.round(t.getExperience() - t1.getExperience()); // which giving wrong results
// return Float.compare(t.getExperience() - t1.getExperience()); // which is not working
}
});
在这里
t1.getExperience()
将为您提供浮动结果。 最佳答案
Math.round(t.getExperience() - t1.getExperience())
不会比较这两个数字,所以我不知道您期望达到什么目标。
您应该使用:
Collections.sort(employeeList, new Comparator<Emp>() {
@Override
public int compare(Emp t, Emp t1) {
return Float.compare(t1.getExperience(), t.getExperience());
}
});
请注意,传递给
Float.compare
的参数与包装compare
方法的参数相反,后者将按降序产生排序。