@Override
public int compare(){
}
这个错就是这个方法报出来的
原因是compare方法没有对空值进行判断,所以传进去的不能是空
所以应该先判断是否为空,在进行判断大小
例如我原来的代码是:
Collections.sort(list, new Comparator<DealerComplaintFollow>() {
@Override
public int compare(DealerComplaintFollow o1, DealerComplaintFollow o2) {
if (FOUR_HOUR_FOLLOW.equals(filed)) {
return o1.getFourHourFollowRate() > o2.getFourHourFollowRate() ? -1 : 1;
} else if (CLOSED.equals(filed)) {
return o1.getComplaintCloseRate() > o2.getComplaintCloseRate() ? -1 : 1;
} else if (AVERAGE_FOLLOW_DURATION.equals(filed)) {
return o1.getAverageFollowDuration() > o2.getAverageFollowDuration() ? 1 : -1;
} else if (AVERAGE_CLOSED_DURATION.equals(filed)) {
return o1.getAverageCloseDuration() > o2.getAverageCloseDuration() ? 1 : -1;
}
return 0;
}
});
修改之后的代码就应该是:
Collections.sort(list, new Comparator<DealerComplaintFollow>() {
@Override
public int compare(DealerComplaintFollow o1, DealerComplaintFollow o2) {
if (FOUR_HOUR_FOLLOW.equals(filed)) {
if (Objects.isNull(o1.getFourHourFollowRate()) && Objects.isNull(o2.getFourHourFollowRate())){
return 0;
}else if (Objects.isNull(o1.getFourHourFollowRate())){
return 1;
}else if (Objects.isNull(o2.getFourHourFollowRate())){
return -1;
}
return o1.getFourHourFollowRate() > o2.getFourHourFollowRate() ? -1 : 1;
} else if (CLOSED.equals(filed)) {
if (Objects.isNull(o1.getComplaintCloseRate()) && Objects.isNull(o2.getComplaintCloseRate())){
return 0;
}else if (Objects.isNull(o1.getComplaintCloseRate())){
return 1;
}else if (Objects.isNull(o2.getComplaintCloseRate())){
return -1;
}
return o1.getComplaintCloseRate() > o2.getComplaintCloseRate() ? -1 : 1;
} else if (AVERAGE_FOLLOW_DURATION.equals(filed)) {
if (Objects.isNull(o1.getAverageFollowDuration()) && Objects.isNull(o2.getAverageFollowDuration())){
return 0;
}else if (Objects.isNull(o1.getAverageFollowDuration())){
return -1;
}else if (Objects.isNull(o2.getAverageFollowDuration())){
return 1;
}
return o1.getAverageFollowDuration() > o2.getAverageFollowDuration() ? 1 : -1;
} else if (AVERAGE_CLOSED_DURATION.equals(filed)) {
if (Objects.isNull(o1.getAverageCloseDuration()) && Objects.isNull(o2.getAverageCloseDuration())){
return 0;
}else if (Objects.isNull(o1.getAverageCloseDuration())){
return -1;
}else if (Objects.isNull(o2.getAverageCloseDuration())){
return 1;
}
return o1.getAverageCloseDuration() > o2.getAverageCloseDuration() ? 1 : -1;
}
return 0;
}
});
return啥结果 根据你想进行排序的顺序决定
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)