我有一份有不同经历的员工名单,例如


  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方法的参数相反,后者将按降序产生排序。

09-15 23:44