单条件排序
@SuppressWarnings("unchecked")
public static void sort(List<JSONObject> list,
final String key,
final String orderby,
final boolean isnumber) {
Collections.sort(list, new Comparator() {
@Override
public int compare(Object a, Object b) {
int ret = 0;
try {
if (OrderByEnum.DESC.name().equalsIgnoreCase(orderby)) {
// 倒序
if (isnumber) {
ret = Double.valueOf(((JSONObject) b).getString(key))
.compareTo(Double.valueOf(((JSONObject) a).getString(key)));
}
else{
ret = ((JSONObject)b).getString(key)
.compareTo(((JSONObject)a).getString(key));
}
}else {
// 正序
if (isnumber) {
ret = Double.valueOf(((JSONObject) a).getString(key))
.compareTo(Double.valueOf(((JSONObject) b).getString(key)));
}else {
ret = ((JSONObject) a).getString(key)
.compareTo(((JSONObject) b).getString(key));
}
}
} catch (Exception e) {
log.error("Sort error: ", e);
e.printStackTrace();
}
return ret;
}
});
}
多条件排序
Collections.sort(staffList, new Comparator<StaffElement>() {
public int compare(StaffElement arg0, StaffElement arg1) {
// 置业管家按成交套数降序排序
if (arg1.getMonthCjNumber() > arg0.getMonthCjNumber()) {
return 1;
} else if (arg0.getMonthCjNumber() > arg1.getMonthCjNumber()) {
return -1;
} else if (arg0.getMonthCjNumber() == arg1.getMonthCjNumber()) {
// 如果成交套数相等的话就按照响应速度升序
if (arg0.getAnswerRate() > arg1.getAnswerRate()) {
//如果响应速度等于0就拍最后面
if(arg1.getAnswerRate()==0){
return -1;
}
return 1;
} else if (arg1.getAnswerRate() > arg0.getAnswerRate()) {
//如果响应速度等于0就拍最后面
if(arg0.getAnswerRate()==0){
return 1;
}
return -1;
}
}
return 0;
}
});