Сортировка списка по приоритету, затем обратный порядок элементов с одинаковым приоритетом - PullRequest
1 голос
/ 18 апреля 2019

Я хочу отсортировать список по приоритетам от максимума к минимуму.Это работает правильно, но мне нужно, чтобы элементы, имеющие одинаковый приоритет, были обращены (потому что сначала мне нужны последние добавленные элементы).переменная name - это то, что я добавил, чтобы быстро увидеть исходный порядок

Некоторый код для уточнения:

 myList.add(new Test(-1,"first"));
 myList.add(new Test(-1,"second"));
 myList.add(new Test(-1,"third"));
 myList.add(new Test(1, "fourth"));
 myList.add(new Test(1, "fifth"));

 public static class Test{
    private int priority;
    private String name;

    public Test(int priority, String name) {
        this.priority = priority;
        this.name = name;
    }
}

Теперь я делаю это:

myList =Stream.of (myList) .sortBy (r -> -r.priority) .toList ();

И результат:

четвертый, пятый, первый, второй, третий

результат, который я хотел бы получить вместо:

пятый, четвертый, третий, второй, первый

КакМогу ли я сделать что-то вроде этого (предпочтительно с использованием библиотеки https://github.com/aNNiMON/Lightweight-Stream-API)

1 Ответ

0 голосов
/ 18 апреля 2019
  myList.stream().sorted((t1,t2) ->{
          if (t1.priority == t2.priority)
              return -1;
          return -(Integer.compare(t1.priority, t2.priority));
      }).collect(Collectors.toList())

Вы можете попробовать вот так

РЕДАКТИРОВАТЬ: я исправил некоторые вещи в решении, вы должны попробовать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...