Shy*_*dda 0 java sorting collections java-8
我有一份员工名单,有不同的经历,如
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
}
});
Run Code Online (Sandbox Code Playgroud)
这里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());
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,与Float.compare
包装compare
方法的参数相比,传递给的参数的顺序相反,后者将按降序排序.
您可以使用Comparator.comparing
employeeList.sort(Comparator.comparing(Employee::getExperience).reversed());
Run Code Online (Sandbox Code Playgroud)
它会产生:
5.6 5.5 5.0 4.5 3.3
归档时间: |
|
查看次数: |
517 次 |
最近记录: |