Java排在第一位

时间:2017-07-26 05:59:38

标签: java sorting

我有以下课程:

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

谢谢

2 个答案:

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