在对list进行排序时,比较函数需要返回Int,这个时候如果是long类型的比较的话,不要用直接相减,然后强制转为int。
可以直接用Long的原生方法去做。Long.compare
老代码==》
Collections.sort(kbases, new Comparator<MgRisKbase>() {
@Override
public int compare(MgRisKbase o1, MgRisKbase o2) {
int i = o1.getScore() - o2.getScore();
if (i == 0) {
i = (int) (o2.getUploadTime().getTime() - o1.getUploadTime().getTime());
if (i == 0) {
return (int) (o2.getId() - o1.getId());
}
}
return i;
}
});
新代码==》
Collections.sort(kbases, new Comparator<MgRisKbase>() {
@Override
public int compare(MgRisKbase o1, MgRisKbase o2) {
int i = o1.getScore() - o2.getScore();
if (i == 0) {
i = Long.compare(o2.getUploadTime().getTime(), o1.getUploadTime().getTime());
if (i == 0) {
return o2.getId().compareTo(o1.getId());
}
}
return i;
}
});