Java排序1始终位于顶部

Java排序1始终位于顶部,java,sorting,Java,Sorting,我有以下课程: public class Rating{ private int userId; private int value; //getters and setters } 我希望每次userId==1000位于顶部和底部时,所有评级都按降序排列 我尝试了以下方法,但似乎不起作用: list.sort((o1, o2) -> { if(o2.getUserId() == 1000){

我有以下课程:

    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());
        });

谢谢

您可以尝试以下过程:

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());
    });
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());
  });
list.sort((o1,o2)->{
if(o1.getUserId()<1000){
返回-1;
} 
else if(o1.getUserId()==1000){
返回0;
} 
else if(o1.getUserId()>1000){
返回1;
}
else if(o2.getUserId()<1000){
返回-1;
} 
else if(o2.getUserId()==1000){
返回0;
} 
else if(o2.getUserId()>1000){
返回1;
}
返回整数.compare(o2.getValue(),o1.getValue());
});

如果
o1.getUserId()==1000)
返回一个负整数、零或正整数,因为第一个参数小于、等于或大于第二个参数。
,除此之外,您忽略
o1
只需检查
o2
是否具有
id==1000
和顺序
o1
是否大于
o2