根据list集合中对象的某个属性进行排序
给大家举个例子,我们想根据用户列表中的总成绩这个属性进行排序,我们可以通过sql实现:
select * from user where 1=1 order by score desc
如果在sql中不方便怎么办呢,我们也可以在java代码中使用connections的sort方法实现:
List<JSONObject> userList = userMapper.selectUserList;
......
//写法一:
Collections.sort(userList, new Comparator<JSONObject>() {
@Override
public int compare(User o1, User o2) {
if ((o1.getScore()> o2.getScore())){
return -1;
}
if (o1.getScore() == o2.getScore()){
return 0;
}
return 1;
}
});
//写法二:
userList.sort((o1, o2) -> {
int cmp = o2.getDouble("Score").compareTo(o1.getDouble("Score"));
if (cmp == 0) {
cmp = o1.getInteger("Score").compareTo(o2.getInteger("Score"));
}
return cmp;
});