このリストのソート方法と、ソートされたリストの最初の項目を常に最上部の最後の語彙にする理由は簡単です。私は...のcompareToを比較することによって-1 0と1を返しますが、コードは、パラメータがO1とO2が同時に比較されるかもしれないことを示唆しているようだ場合匿名関数Collections.sort Java
List<String> allNames = new ArrayList<>();
allNames("Alfred");
allNames("Mary");
allNames("Hilda");
allNames("Zenda");
allNames("Thomas");
allNames("Isabel");
Collections.sort(allNames, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.equals("Zenda") && !o2.equals("Zenda")){
return -1;
} else if (o2.equals("Zenda") && !o1.equals("Zenda")){
return 1 ;
}
return o1.compareTo(o2);
}
});
これは、o1とo2が同じオブジェクトである可能性があることを意味しますか?コードは、同じ条件付きIf文で2つの引数で等号を探しているようです。 – DevelopeXCode
確かにそうかもしれません。 'o1'が" Zenda "で、" o2 "が" Zenda "でない場合の第1の条件チェックと、第2の条件式では反対のチェックを行います。たとえば、両方が「Zenda」の場合、「else」条件が発生します。 'o1.compareTo(o2)'は、同じオブジェクトであれば '0'を返します。これは、ソート方法に、2つのオブジェクトの相対的な順序は関係ない(それらが同じであるため)ことを知らせます。 – Zircon
私は実装を視覚化できるように、使用しているアルゴリズムを知っている人はいません。説明が簡単な場合は、シーンの裏に何が起こっているのですか... – DevelopeXCode