我正在尝试创建一种通过以下方式对列表进行排序的方法:
private List<Processor> getByPriority(){
return processors.stream().sorted( new ProcessorComparator() ).collect( Collectors.toList() );
}
但我在Comprator javadoc中读到,比较需要是一个总排序关系。也就是说,除非它们相等,否则没有两个比较器可以具有相同的优先级。情况可能并非如此。
我正在尝试这个简单的比较器:
public class ProcessorComparator implements Comparator<TTYMessageProcessor<?>>{
@Override
public int compare( Processor processor1 , Processor processor2 ) {
return processor1.getPriority() - processor2.getPriority();
}
}
当然,我可以使处理器具有可比性,但我想避免对所有处理器进行修改。有没有办法用流对它们进行排序?作为替代方案,我可以编写自己的方法或创建更复杂的比较器,但我对缺乏更优雅的解决方案感到惊讶。