Java 国際化規則。交換しろって言う
s1.compareTo(s)==0
と
Collator.compare(s1,s2)<0
なぜ<0
?
Javadocに基づくと、これはタイプミスです。次のようにする必要があります==
。
整数値を返します。ソースがターゲットより小さい場合、値はゼロ未満、ソースとターゲットが等しい場合、値はゼロ、ソースがターゲットより大きい場合、値はゼロより大きい。
これは(リンクされた例が s を比較するため) のString
オーバーロード用ですが、メソッドの一般的なバージョンは同じように動作します。Collator.compare
String
あなたが参照した記事は、Javaチュートリアルの対応するページに間接的にリンクしており、上記と一貫して動作を説明しています。
次のポイントを見ると、このサイトに頼るべきかどうかわかりません...常に0を返すコレーターを作成します。
package com.rule;
public class Do_not_use_String_compareToIgnoreCase_correction
{
public void method()
{
new MyCollator().compare("String", "String"); // CORRECTION
}
class MyCollator extends java.text.Collator
{
public int compare(String source, String target)
{
return 0;
}
public java.text.CollationKey getCollationKey(String source)
{
return null;
}
public int hashCode()
{
return 0;
}
}
}