は私が行うことで、リストをソートする方法作成しようとしています:Javaストリームを非トータルの発注基準でソートします。
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();
}
}
私はプロセッサが同等作ることができますが、私はすべてのProccessorsへの変更を避けたい:
私はこの単純なコンパレータをしようとしていました。ストリームで並べ替える方法はありませんか?代替案として、私自身の方法を書いたり、より複雑なコンパレータを作成したりできましたが、より洗練されたソリューションがないことに驚いています。元のストリームのreferences要素を読み込み
プロセッサの優先順位を気にしない場合は、完全に細かいコンパレータです。この場合の「同等」は、プロセッサの優先順位と同じであるため、プロセッサ自体ではありません。 – BeyelerStudios
javadocに従ったequalsメソッドと一貫しています。しかし、私はその交際について本当にわからない。私は、ストリームがストリームを既に存在するとみなして削除しないことを確認したいだけです。一方、同じ順序を持つプロセッサがランダムにソートされても、私は気にしません。ある日Pc(p = 2)はPb(p = 2)の前に現れ、逆行する。あなたの言い回し "プロセスの優先度とオブジェクトの平等の平等が照らし出されていました" – borjab
私はJava 8を使用していますが、これはもっと複雑です: 'Comparator.comparingInt(Processor :: getPriority)'を使用してください。 –