Я пытаюсь создать метод, который сортирует список, делая:
private List<Processor> getByPriority(){
return processors.stream().sorted( new ProcessorComparator() ).collect( Collectors.toList() );
}
Но я прочитал в Comprator javadoc, что сравнивает to должно быть отношением тотального упорядочивания. То есть никакие два компаратора не могут иметь одинаковый приоритет, если только они не равны. Это может быть не так.
Я пробовал этот простой компаратор:
public class ProcessorComparator implements Comparator<TTYMessageProcessor<?>>{
@Override
public int compare( Processor processor1 , Processor processor2 ) {
return processor1.getPriority() - processor2.getPriority();
}
}
Конечно, я мог бы сделать процессор сопоставимым, но я хотел бы избежать модификаций всех процессоров. Нет ли способа отсортировать их потоками? В качестве альтернативы я мог бы написать свой собственный метод или создать более сложный компаратор, но я удивлен отсутствием более элегантного решения.
Comparator.comparingInt(Processor::getPriority)
. - person Louis Wasserman   schedule 20.04.2016