私は私のカスタムコンパレータ書いている:なぜこのように比較していますか?
public static Comparator<String> compareEThenEverything(){
return (s1, s2) -> {
if(s1.toLowerCase().startsWith("e") && s2.toLowerCase().startsWith("e"))
return 0;
if(s1.toLowerCase().startsWith("e")) return 1;
return -1;
};
}
をそして私は「E」で始まるすべての文字列が最初になることを私の配列をソートします。
なぜ現在のコンパレータが逆転しているのですか?最初の文字に "e"を付けた単語は、他の文字と比べると大きかったと思います。
どうしてですか?
は十分なはずコンパレータのJavaDocの最初の行を読む:
は、あなたが他の文字列も同様にソートしたい場合は、
String. CASE_INSENSITIVE_ORDER
でそれをチェーンすることができますhttps://docs.oracle.com/javase /8/docs/api/java/util/Comparator.html#compare-TT- –2番目の条件は、前のif文と同じであるため評価されません。 – vk23
@NoMercy ye、あなたは正しいです – Andrew