Нет, не используйте компаратор для этого, или, точнее, не для всей работы.Задача компаратора состоит в том, чтобы сравнить два объекта и определить порядок между этими двумя объектами.Он не подходит для обнаружения пропусков в последовательности приоритетов.
Вместо этого, предполагая, что приоритеты являются интегральными и уникальными, я предлагаю использовать массив и своего рода сортировку по осям для объектов с определенными приоритетами.Приоритет 1 включается в индекс массива 1, индекс приоритета 2 и т. Д. Объекты с приоритетом null
сортируются с помощью компаратора по убыванию даты создания, а затем заполняются в индексы массива, которые все еще равны null
(кроме индекса 0,Я думаю).
Под «предположением, что приоритеты являются интегральными и уникальными», я имею в виду, что вы не рискуете двумя объектами с приоритетом 3 или объектом с приоритетом 2.44.
Я мог бы использоватьstream и Collectors.partitioningBy
, чтобы отделить объекты с приоритетами от объектов без приоритета, но, конечно, есть и другие способы.
Я бы написал это вручную.Я никогда не слышал ни о каком готовом решении для этого.Поиск никогда не вредит, но я был бы удивлен, найдя его.С другой стороны, не нужно много строк кода.
Кстати, используйте LocalDate
для ваших дат, поскольку у них нет времени суток (не LocalDateTime
).