我有以下课程:
public class Rating{
private int userId;
private int value;
//getters and setters
}
我希望每次userId == 1000都在顶部及以下,按降序排列所有等级。
我尝试了以下但似乎不起作用:
list.sort((o1, o2) -> {
if(o2.getUserId() == 1000){
return 1;
}
return Integer.compare(o2.getValue(), o1.getValue());
});
谢谢
答案 0 :(得分:1)
list.sort((o1, o2) -> {
if (o1.getUserId() == o2.getUserId()) {
return Integer.compare(o2.getValue(), o1.getValue());
} else if(o1.getUserId() == 1000) {
return -1;
} else if (o2.getUserId() == 1000) {
return 1;
}
return Integer.compare(o2.getValue(), o1.getValue());
});
答案 1 :(得分:1)
您可以尝试以下过程:
list.sort((o1, o2) -> {
if (o1.getUserId() < 1000) {
return -1;
}
else if(o1.getUserId() == 1000) {
return 0;
}
else if (o1.getUserId() > 1000) {
return 1;
}
else if (o2.getUserId() < 1000) {
return -1;
}
else if(o2.getUserId() == 1000) {
return 0;
}
else if (o2.getUserId() > 1000) {
return 1;
}
return Integer.compare(o2.getValue(), o1.getValue());
});