次のようにしてリストをソートするメソッドを作成しようとしています:
private List<Processor> getByPriority(){
return processors.stream().sorted( new ProcessorComparator() ).collect( Collectors.toList() );
}
しかし、Comprator の javadocを読みましたが、これは完全な順序関係である必要があります。つまり、2 つのコンパレータが等しくない限り、同じ優先度を持つことはできません。そうではないかもしれません。
私はこの単純なコンパレータを試していました:
public class ProcessorComparator implements Comparator<TTYMessageProcessor<?>>{
@Override
public int compare( Processor processor1 , Processor processor2 ) {
return processor1.getPriority() - processor2.getPriority();
}
}
もちろん、プロセッサを同等にすることもできますが、すべてのプロセッサへの変更は避けたいと考えています。ストリームで並べ替える方法はありませんか? 別の方法として、独自のメソッドを作成するか、より複雑なコンパレータを作成することもできますが、より洗練されたソリューションがないことに驚いています。